zoukankan      html  css  js  c++  java
  • 爬取京东评论,且修改网址直接可复用哦(送代码)

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

                                                                                                       

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

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

    01

    如何准备爬虫环境?

    其实不难

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

    1.  
      import requests
    2.  
      import re
    3.  
      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文件,就是我们保存的文件。打开看一下效果吧:

     
  • 相关阅读:
    JavaScript实现Map、Reduce和Filter
    Javascript常用对象的属性和方法
    自己封装的Ajax
    JavaScript函数调用规则
    JavaScript模板引擎使用
    java 简单贪吃蛇
    java邮件发送(含附件)
    java 读写Oracle Blob字段
    java 连接飞信API
    非常棒的Java REST服务器栈
  • 原文地址:https://www.cnblogs.com/finer/p/11261830.html
Copyright © 2011-2022 走看看