问题:爬虫某小茶叶电商平台网网站的商品数据
网址: 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,我也可以帮忙看看。