利用python requests库爬取淘宝商品评论_python

本文介绍了如何使用Python的requests库高效地爬取淘宝商品评论,避免使用selenium,提高爬取速度。通过分析请求头和参数,实现翻页评论的爬取,并解决编码问题,提供完整的爬虫代码示例。
摘要由CSDN通过智能技术生成


一、起因

看到一篇文章,感觉自己可以动手试试
Python 不用selenium 带你高效爬取京东商品评论

文章中提出了一个直接利用request爬取数据的方式,那样会比selenium爬取快很多。

此外还用到了一些对这个项目有帮助的博客


二、项目实现

1. 分析实现方式

爬取的商品评论如下图所示:
在这里插入图片描述为了爬取多页评论,可行的方式之一是通过selenium模拟浏览器访问网页的点击动作,但那样效率太慢,这里通过一个更快的方式实现。

我们需要对请求数据的格式进行分析,然后直接利用requests包模拟请求得到数据即可。

首先要知道,网页中的很多请求都是通过json格式返回文本的,我们可以在某淘宝商品页面进行查看,打开浏览器按F12打开开发者工具,选中Network选项,这一部分浏览器将记录访问该网页过程中产生的网络请求。
在这里插入图片描述
我们可以在左侧产生的各个数据包中逐个检查或直接按照文本搜索,这里直接通过搜索功能查找。
在这里插入图片描述
通过评论中的“好看”关键词找到这个json格式对应的请求,即list_detail_rate.htm,点击进行查看,得到的json数据格式如下图所示,可以看出其中包含的rateContent即为实际的评论内容,在rateDetail/rateList
在这里插入图片描述
在这里插入图片描述
我们可以利用这个请求头中的参数,加以修改实现爬取多页评论。
在这里插入图片描述
请求头中可以猜测参数代表的含义,这里可能有用的参数有:itemId为商品id,order可能为评论排序方式,currentPage为当前评论的页数,下面通过编程实现爬取功能。

2. 编码实现

首先导入各个库,准备所需参数,这里用到的参数都可以通过开发者工具获取。
其中Params为原url中的参数,不懂的看这篇,只用到了需要的参数,即itemId/sellerId/currentPage/callback

import re
import time
import csv
import os
import requests
import json
import html


headers = {
   
    "cookie": "dnk=%5Cu6Cu74DC3; t=e084d0ff3438e55e02b4bd0f3940a782; lid=%E6%9D%8E%E8%A5%BF%E7%93%9C3; _tb_token_=8fe5960b5; cookie2=1ed157aa4da72014b0401c225e7; enc=cLGI69iGuHhR5dHEyMC%2BaI%2F7fh2OwCuuzFJDOCsmgWXuNule0EHvOkbeTLW9DXv2LYJaLPOzBTvYO3iE4dPXCQ%3D%3D; cna=bCj3Fg9aQAQ5/eXqgUel2; tk_trace=1; hng=CN%7Czh-CN%7CCNY%7C156; uc1=cookie16=UtASsssmPlP%2Ff1IHDsDaPRu%2BPw%3D%3D&pas=0&existShop=false&cookie15=UtASsssmOIJ0bQ%3D%3D&lng=zh_CN&cookie14=UoTUPc3ljpL4zQ%3D%3D&tag=8&cookie21=W5iHLLyFeYZ1WM9hVnmS&cart_m=0; uc3=lg2=VFC%2FuZ9ayeYq2g%3D&vt3=F8dBxdGLa3WXMx5cj7I%3D&id2=UUkIHIKbWeXUiQ%3D%3D&nk2=o%2FMlsnK76A%3D%3D; tracknick=%5Cu674E%5Cu897F%5Cu74DC3; uc4=nk4=0%40oaXu7yh9pdCZTaRJY7qDotYR&id4=0%40U2uE9bgavzU7dxkYCPk4vP%2F1op69; lgc=%5Cu674E%5Cu897F%4DC3; sgcookie=EIrgPgb1qADYh9IUfx2JY; csg=883d7d47; _m_h5_tk=fef5252478fcdbbaeaa83cea3acf9_1587199947953; _m_h5_tk_enc=1f5dbcd059904d7035151f823874efe2; tfstk=c9DRBv_NpEYuLJiz_vd0deSXjokRZ8j8-gadpH6GIES9fvXdirHiBNk78HnC..; x5sec=7b22726174656d616e616765723b32223a2230626238323034653038376633656165366165303265386233834435057332f2f5146454e57796b3447497875716b7341453d227d; OZ_SI_2061=sTime=1587532108&sIndex=25; OZ_1U_2061=vid=ve9fd14cbef42e.0&ctime=1587535343&ltime=1587535336; OZ_1Y_2061=erefer=https%3A//kb-render.alicdn.com/html/61574/2020/04/17/5a47a178-0d8d80e8-120425885.html%3Frd%3Dhttps%253A%252F%252Fclick.mz.simba.taobao.com%252Fbrand%253Fe%253D6B%25252FcjhXDKa6jVNTaFT64%25252Bb9DF67xy%25252FmOtjveIVdRh6NfUUPlE8tgezaquuKfLDrni1SKmG9%25252FSppqtsZTksZxmREkdsuPsCamr8WVqNcfHdhVdOCq6IIdOCZMxKbtd687c86rR9eOOepHFbKvafqb0Q3zD0BqzDf03%25252B%25252FWxIR3%25252FcGPevfddmA99SKox2NHyAtuaoHKHdA%25253D%25253D%2526u%253D%2526k%253D507%2526eadt%253D42%26style%3D112%26q%3Duniqlo%26nq%3D%25E4%25BC%2598%25E8%25A1%25A3%25E5%25BA%2593%26enable_linkage%3Dtrue%26bucketids%3D182037%2C264350%2C182043%2C182047%2C182052%2C182055%2C2790058%2C3226910%2C3226907%26campaign_id%3D194366765%26adgroup_id%3D194731278%26creative_id%3D32265002390001%26session_id%3D14dd5c0b03fde7005e9fd1442df11cb6%26shop_id%3D57303596%26nickname%3D%25E6%259D%258E%25E8%25A5%25BF%25E7%2593%259C3&eurl=https%3A//uniqlo.tmall.com/%3Fali_trackid%3D42_b93e96abc9ee1fd7271dfba74bb2629f%23%21
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值