查看原文
其他

手把手 | 爬取京东评论,且修改网址直接可复用哦(送代码)

小码哥 七天小码哥 2021-07-21


本次python实战,主要目标是利用 Python爬取京东商品评论数,如上图所示:爬取“Python之父”推荐的小蓝书,这些信息主要包括用户名、书名、评论等信息。


爬取的网址url是 https://item.jd.com/12531181.html ,爬取后的结果会保存在csv文件里面,便于数据分析。



01

如何准备爬虫环境?

其实不难



环境:MAC + Python3.6 ;  IDE:Pycharm.  具体使用的模块如下。


import requests
import re
import json


但是如果你的系统上安装了anaconda,模块requests已经安装完成,但是 pycharm软件不能识别。


此时,需要使用preferences直接进行安装,入下图所示,点击+,直接安装即可。





02

爬虫分析真的很重要

准备工作



我们的目标是爬取京东的《零基础轻松学PYTHON》评论数,打开网页发现评论的页数很多。


也就是说我们需要解析多个页面。因此,我们想到使用一个for循环来实现



那么该如何找到评论的网址呢?首先,打开浏览器,比如chrome,然后右键选择检查,调出来网页源代码,如下图:



然后,点击Network选项卡,并且把左边的网页翻滚到评论数,最后搜索COMMEN。如下图:你会发现红框里面的URL。该网址就是我们爬取的网址。




具体的网址是  https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv36&productId=12531181&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1。通过观察,我们发现page=0,pagesize=10等信息。


并且当你点击下一页时,您会发现page=2,而网址中的其他信息没有变化,如图所示:



因此,我们构造循环即可实现对多个网页的爬取,比如100个网页,代码如下:


if __name__ == '__main__':
# 循环100次
for i in range(101):
main(start=i)



03

真正开始爬取评论数

两步走



根据以前爬虫文章(爬虫实战)的解析 ,我们分2步爬取本次任务。第一步是解析网页;第二步是爬取评论数并且保存文件。


为了方便代码可复用性和简洁,我们把两步写入两个函数里,分别是begain_scraping()和python_coments(),代码如下:


def main(start):
"""
开始爬取
:return:
"""
# 第一步解析网页
comments_jd = begain_scraping(start)

# 第二步 爬取评论并保存文件
python_comments(comments_jd)




04

开始解析网页

第一步



解析网页,也就是编写begain_scraping(),代码如下:



首先,根据爬取的网址(https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv36&productId=12531181&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1,我们得到下面信息:


# 构造商品地址
url_jd = 'https://sclub.jd.com/comment/productPageComments.action?callback'
# 网页信息
vari_p = {
# 商品ID
'productId': 12531181, # 换成你想爬取的ID就可以了
'score': 0,
'sortType': 5,
# 爬取页面
'page': page,
'pageSize': 10,
}


为了防止反爬虫,我们构造一个伪装浏览器,然后开始爬取,代码如下


# 防止反爬虫,不需要更换
headers = {
'cookie': 'shshshfpaJsAhpiXZzNtbFCHZXchb60B240F81702FF',
'referer': 'https://item.jd.com/11993134.html',
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'
}

comment_jd = requests.get(url=url_jd, params=vari_p, headers=headers)



05

开始爬取评论数并保存

第二步



开始爬取评论数并保存,也就是实现函数python_comment。本函数主要是对爬取的网页解析,然后保存在CSV文件。这也是模块化编程,逻辑清晰 ,代码简洁高效。具体代码如下:


def python_comments(comment_resp):
"""
爬取数据并且写入评论
:param comment_resp:
:return:
"""
comment_js = comment_resp.text

comment_dict = json.loads(comment_js)
comments_jd = comment_dict['comments']
for comment in comments_jd:
user = comment['nickname']
color = comment['productColor']
comment_python = comment['content']

# 写入文件
with open('comments_jd.csv', 'a', newline='')as csv_file:
rows = (user, color, comment_python)
writer = csv.writer(csv_file)
writer.writerow(rows)



06

爬取结果展示

效果



首先,在pycharm软件控制台 ,您可以看到爬取页面信息,如下:



另外,您会在项目下面, 多了一个CSV文件,就是我们保存的文件。打开看一下效果吧:



通过大家的评论,我们可以看出《轻松学Python》特别适合零基础的小伙伴学



特别福利时间:无论您是否下单,请添加作者小码哥微信(data_circle_yoni) ,获得手把手教你学python的机会还有本次实战源代码。

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存