一.不需要h5st解密,js逆向什么东西的,直接简单暴力爬,简单到怀疑人生!!!
自己在刚开始爬取时候,处处受阻,h5st加密算法更新频率也快,自己也没有学过js逆向,解密等,就停滞了一段时间,后来经过查看帖子和同门的讨论,测试,发现一个两年前的帖子中有个京东商品评论js代码格式,直接能在浏览器上打开并显示内容,然后就尝试将“productId”换成其他商品的,并能够成功显示出内容,评论内容也是最新的,惊喜中带着疑惑,为什么“https://club.jd.com/comment/productPageComments.action?&productId={url_id}&score={i}&sortType=5&page={j}&pageSize=10&isShadowSku=0&fold=1”
可以直接用来爬取,那么加密的意义又在哪?到现在还是很疑惑
二.url解释和代码
其中“productId”为商品的id,如图:
“score”的0,1,2分别代表好,中,差评,
“page”即页数
代码中的:“urls_id”可以增添多个商品id,通过for循环,可以一下爬取多个商品的评论
通过简单的三层for循环就能对多个商品的好中差评进行多页爬取了!
import requests
import csv
import os
file_path = 'comment_data.csv'
file_exists = os.path.exists(file_path)
with open(file_path, mode='a', encoding='utf-8', newline='') as f:
csv_writer = csv.DictWriter(f, fieldnames=['评论', '分数'])
if not file_exists or os.path.getsize(file_path) == 0:
csv_writer.writeheader()
urls_id=['100077097741']
for url_id in urls_id:
for i in range(1,3):
for j in range(1,100):
url = f'https://club.jd.com/comment/productPageComments.action?&productId={url_id}&score={i}&sortType=5&page={j}&pageSize=10&isShadowSku=0&fold=1'
res = requests.get(url)
comments = res.json()['comments']
for k in comments:
data = {
'评论': k['content'],
'分数': k['score']
}
print(data)
csv_writer.writerow(data)
三.利用Drissionpage爬取
在这个方法写出来之前,我是利用了drissionpage自动化来进行爬取的,也成功爬取了出去,但代码的简洁程度和爬取速度远远不如简单暴力爬取法,有感兴趣的小伙伴可以评论留言,大家一起学习讨论, 另外就是开头的疑问,有没有大佬解答一下,牢弟也研究了一阵,还没有解决