javascript - Python爬js加载的页面数据,已试过selenium可用,求其他高效方法?

查看:124
本文介绍了javascript - Python爬js加载的页面数据,已试过selenium可用,求其他高效方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

问题:爬虫某小茶叶电商平台网网站的商品数据
网址: http://donghetea.com/category...频道:行情参考)

爬虫计划>
1、在类目下,获取所有商品的url(已获取行情参考下所有商品url链接)
2、请求每个url,爬取详细的产品年份,规格,价格等。
目前遇到问题~看到商品资料是用js加载。

工具:用python3 requests 和beautifulsoup 解析
无法解析产品url里面js加载的产品信息
我用了下下策,用selenium来模拟打开浏览器,再用beautfulsoup解析获取商品详情页面里的资料。
但是效率太低了,想请教是否有更好的方法~
试过抓包,但是因为太菜,没找到api。

解决方案

做爬虫有很长一段时间了,我来说说对于这种情况下我的解决方法吧。
首选就是通过抓包获取URL,掌握它的构造规律,然后再请求即可,一般返回数据都是json格式。如果找不到URL构造的规律,就用下面的方法。
第二种方法用selenium+phantomjs,phantomjs可看作无UI的浏览器,它相对于真实的浏览器加载的资源更少,效率也相对于你用selenium+chrome/firefox的效率更高,且它是在后台运行。如果遇到phantomjs不能渲染的某些JS信息,或者说对方网站针对phantomjs做了封锁,那么就用第三种方法。
第三种方法用selenium+chrome/firefox。这种方法目前基本不可防,除非对方下了决心反爬(我就遇到过,有个安全公司专门针对各种webdriver提取了指纹,如果要想使用这种方法,必须用它没包含的webdriver),否则基本可行,缺点就是效率低,太低了...
题主说的商品资料是js加载的,不知道是题主写了代码测试还是直接臆测的,我写了几行代码,然后直接请求这个页面,再把返回源码保存为html,发现它包含了题主需要的商品信息,并不存在信息丢失。
代码如下:

import requests
url = 'http://donghetea.com/goods.php?id=1563'
cont = requests.get(url).text
print(cont)

对于题主说的商品无法解析,如果是说通过上面的代码抓取的商品内容不全,那么再回复我,可能是我没完全理解你的意思。如果是题主使用bs解析有问题,那么可以看看它的api,我也可以帮忙看看。

这篇关于javascript - Python爬js加载的页面数据,已试过selenium可用,求其他高效方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆