收藏文章 楼主

无法获取动态加载的数据?一招教你轻松搞定

版块:IT/互联网   类型:普通   作者:小羊羔links   查看:326   回复:0   获赞:0   时间:2022-09-23 20:51:26

在爬取网页数据时,经常会遇到直接对网页地址发送请求,可返回的HTML代码中并没有所需要的数据,遇到这样的情况,多数都是因为网页数据使用了动态加载的技术。例如爬取(https://www.taobao.com/ 某宝首页,猜你喜欢的宝贝数据时,就会遇到动态加载数据的情况,数据如图1所示。

宝贝数据

Requests-HTML模块提供了render()方法,第一次调用该方法将会自动下载Chromium浏览器,然后通过该浏览器直接加载JavaScript渲染后的信息,使用render()方法爬取宝贝数据的具体步骤如下

1 创建HTML会话与随机请求头对象,然后发送网络请求,在请求成功的情况下调用render()方法获取网页中JavaScript渲染后的信息。代码如下

01   from requests_html import HTMLSession,UserAgent    导入HTMLSession

02    

03   session = HTMLSession()          创建HTML会话对象

04   ua = UserAgent().random          创建随机请求头

05   发送网路请求

06   r = session.get('https://www.taobao.com/',headers = {'user-agent': ua})

07   r.encoding='gb2312'              编码

08   if r.status_code == 200:         判断请求是否成功

09       r.html.render()              调用render()方法,没有Chromium浏览器就自动下载

2 运行步骤2中代码,由于第一次调用render()方法,所以会自动下载Chromium浏览器,下载完成后控制台将显示如图2所示的提示信息。

2  Chromium浏览器下载完成后的提示信息

注意 在第一次调用render()方法时,可能会出现如图3所示的错误信息。此时在命令提示符窗口中执行pip install -U "urllib3<1.25"命令,降低Anacondaurllib3模块的版本即可解决。

错误提示信息

3 打开浏览器开发者工具,在“Elements”的功能选项中确认宝贝信息所在HTML标签的位置,如图4所示。

获取宝贝信息的标签位置

4 编写获取宝贝信息的代码,首先获取所有宝贝对应的a标签,然后在a标签中获取详情页地址,接着在a标签中获取宝贝的标题与价格。代码如下

10   a_href_all = r.html.xpath('//a[@class="item-link"]'获取所有宝贝对应的标签

11   for in a_href_all:

12       href=a.attrs.get('href')    获取详情页地址

13       if 'http'not in href:       检测地址中是否含有

14           href='http:'+href       地址中没有http的添加

15       title = a.find('div.title',first=True)        获取宝贝的标题

16       price = a.find('span.price-value',first=True获取宝贝的价格

17       print('宝贝标题名称 ',title.text)    打印宝贝名称

18       print('宝贝价格 ',price.text)    打印宝贝价格

19       print('宝贝详情页地址 ',href)          打印宝贝详情地址

程序运行的部分结果如下

宝贝标题名称 恐龙公仔毛绒玩具玩偶床上睡觉长条夹腿抱枕布娃娃送女生生日礼物

宝贝价格 ¥12.9

宝贝详情页地址 http://item.taobao.com/item.htm?id=670653734656&scm=1007.40986.275655.0&

pvid=f4d130aa-ccb1-4bfd-873e-0371366df6b9

宝贝标题名称 多层塑料抽屉式收纳柜宝宝衣柜家用婴儿玩具盒整理箱儿童储物柜子

宝贝价格 ¥108

宝贝详情页地址 http://item.taobao.com/item.htm?id=638337392473&scm=1007.40986.275655.0&

pvid=f4d130aa-ccb1-4bfd-873e-0371366df6b9

上新ins小包包女斜挎包2022新款简约少女百搭小清新单肩尼龙布包

¥9.9

http://item.taobao.com/item.htm?id=669577450930&scm=1007.40986.275655.0&pvid=21e2d603-6b0c-4afe-a5da-f576eccc8f00

啊呜鲨鱼抱枕条条薯条同款毛绒玩具床上陪睡抱枕玩偶公仔生日礼物

¥12.9

http://item.taobao.com/item.htm?id=602339378775&scm=1007.40986.275655.0&pvid=21e2d603-6b0c-4afe-a5da-f576eccc8f00




小羊羔锚文本外链网站长https://seo-links.cn 
回复列表
默认   热门   正序   倒序

回复:无法获取动态加载的数据?一招教你轻松搞定

Powered by 小羊羔外链网 8.3.12

©2015 - 2024 小羊羔外链网

免费发软文外链 鄂ICP备16014738号-6

您的IP:182.107.180.175,2024-04-26 21:02:14,Processed in 0.05188 second(s).

支持原创软件,抵制盗版,共创美好明天!
头像

用户名:

粉丝数:

签名:

资料 关注 好友 消息