欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-02-03 20:19:04
...

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

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

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

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

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

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

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

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

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

第四步,右击这个部分的名称,依次选择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定位来截取评论内容。

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

完整代码如下:

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)