新手求助: beautifulSoup4 .select('.bnrName') 取不到到 text 文字

2017-05-13 09:44:53 +08:00
 joyc

背景:
Python3 下使用 bs4 的 select 去获取 ZOZO首页上方的 coupon 信息中店铺名字。

问题:
发现自己找不到他的店铺名字在写在什么地方,不知道怎么取,前端 js 不懂,请教诸位解答。谢谢。

如下截图中是想要获取的文字,发现查看源码中却没有文字。

<div class="couponInfo">
	<p class="bnrName">说好的文字呢。。。</p>
	<p class="bnrText"></p>
</div>
2454 次点击
所在节点    Python
5 条回复
joyc
2017-05-13 10:04:14 +08:00
自己的代码如下:

```
import requests, bs4

shopName = 'BEAUTY&YOUTH'
url = 'http://zozo.jp/'

def getZozoCoupon():
res = requests.get(url, headers={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36"})
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, 'html.parser')
elems = soup.select('.bnrName')
return elems[0].text.strip()
```
Kilerd
2017-05-13 10:54:42 +08:00
证明是 js 生成的

建议使用无头浏览器爬
joyc
2017-05-13 15:04:55 +08:00
@Kilerd 谢谢,意思是要安装 PhantomJS 这个 来模拟浏览器取数据是吧,我查查,谢谢。
Pinwheel
2017-05-14 13:48:55 +08:00
分析一下网络请求直接走它取得这个数据的接口吧。
joyc
2017-05-15 20:36:28 +08:00
@Pinwheel 谢谢思路,用 headless 浏览器解决了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/361029

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX