前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬取京东评论,且修改网址直接可复用哦(送代码)

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

作者头像
测试开发社区
发布2019-09-20 16:30:00
5.3K1
发布2019-09-20 16:30:00
举报
文章被收录于专栏:测试开发社区测试开发社区

本次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文件,就是我们保存的文件。打开看一下效果吧:

文章转载自公众号 七天小码哥 , 作者 小码哥

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档