クロールJingdongのレビューとURLを直接編集し、再利用可能なああ(送信コード)

公共七日、少数のコードの弟、小さなヤードの弟からの転載記事

                                                                                                   

 

 

クロール「パイソン」父のリトルブルーブックの勧告、ユーザ名、タイトル、コメントやその他の情報を含む情報を:リアルパイソンは、主な目標は、上記のように、コメント商品のJingdongの数をクロールのPythonを使用することです。

 

URLのURLのクロールは、簡単なデータ分析のための内部のcsvファイルに保存されたクロールの結果https://item.jd.com/12531181.htmlです。

 

 

01

爬虫類環境を準備するには?

それは難しくありません

 

 

環境:MAC + Python3.6、次のようにIDE :. Pycharmモジュールです。

 

  1.  
    インポート要求
  2.  
    輸入再
  3.  
    輸入JSON

 

アナコンダがシステムにインストールされている場合でも、モジュールリクエストのインストールが完了しているが、pycharmソフトウェアが認識しません。

 

この場合には、そのまま図に取り付けられたプリファレンスを使用する必要がある。、+クリックして、直接インストールすることができます。

 

 

 

 

02

爬虫類の分析は非常に重要です

準備

 

 

私たちの目標は、「ゼロベースの簡単PYTHON」コメントのJingdongの数をクロールすることで、オープンなWebページには、コメントの多くのことがわかりました。

 

我々は、複数のページをレンダリングする必要があること。したがって、我々は達成するためのforループを使用することを期待しています。

 

 

それでは、どのようなコメント、それのURLを見つけるには?まず、クロムなどのブラウザを開き、右下図のように、ページのソースコード変調をチェックしてくださいクリックしてください:

 

 

次に、[ネットワーク]タブをクリックし、コメントのページ数、最終的な検索COMMENの左に転がります。以下に示すように:あなたは、URL内の赤いボックスがあります。URLは、私たちのクロールのURLです。

 

 

 

特定の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です。観察を通じて、私たちはそのページ= 0、ページサイズ= 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文件,就是我们保存的文件。打开看一下效果吧:

 

 

 

おすすめ

転載: www.cnblogs.com/finer/p/11261830.html