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

 绝望的贵族_500 发布于 2022-11-10 18:01

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

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

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

1 个回答
  • 做爬虫有很长一段时间了,我来说说对于这种情况下我的解决方法吧。
    首选就是通过抓包获取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,我也可以帮忙看看。

    2022-11-12 01:51 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有