如何用Python爬取异步加载的网页?以京东商品评论为例!

在用python爬取网页时,会遇到网页不是一次性全部加载的情况,这种网页会在某种操作后,才加载对应的部分,拿京东来说,点进商品页面,并不会直接加载评论部分内容,而是在点击“评论”标签后才会加载第一页评论的内容,点击“下一页”之后,才会加载第二页评论的内容。

对于这些异步加载的内容,直接爬取的方式是行不通的,所以要通过找到异步加载内容的url来实现内容爬取。

第一步,打开某一商品页面,打开开发者工具,进入到Network一栏。

第二步,点击网页中的商品评价,然后发现Network中会多出许多项。

第三步,依次点击Network中多出的项目,找出评论所在的位置。

第四步,右击这个部分的名称,依次选择Copy——Copy link address,得到“https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=12413062&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1”,这就是评论内容的url,改变“page=”后的数字,可以切换评论的不同页。打开复制的地址,出现以下页面,发现评论都在content的后边,于是就可以利用content定位来截取评论内容。

完整代码如下:

扫描二维码关注公众号,回复: 11495361 查看本文章
from requests_html import HTMLSession
import time

session = HTMLSession()

a = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=12413038&score=0&sortType=5&page='
b = '&pageSize=10&isShadowSku=0&fold=1'

for i in range(10):
    link = a+str(i)+b
    r = session.get(link)
    str_all = r.text
    end = 1
    for i in range(10):
        start = str_all.find('content',end)
        end = str_all.find(',',start)
        print(str_all[start+10:end-1])
    time.sleep(10)

源码获取加群:850591259

猜你喜欢

转载自blog.csdn.net/weixin_43881394/article/details/107729986