Python实现通过ASIN爬取亚马逊产品评论

一、最近一直在研究爬取亚马逊评论相关的信息,亚马逊的反爬机制还是比较严格的,时不时就封cookie啊封ip啊啥的。而且他们的网页排版相对没有那么规则,所以对我们写爬虫的还是有点困扰的,经过一天的研究现在把成果及心得分享给大家

1.先是我们所需要的库,我们这里是用xpath进行内容匹配,将爬取的内容存入Mysql,所以以下就是我们所需要的库

import requests
import lxml.html
import pandas as pd
import pymysql
import random
import time

2.接下来是根据ASIN和请求头的cookie来获取网页

def get_response(ASIN, p, headers):url = 'https://www.amazon.com/dp/product-reviews/' + str(ASIN) +'/ref=cm_cr_arp_d_paging_btm_prev_13?ie=UTF8&reviewerType=all_reviews&sortBy=recent' + '&pageNumber=%s'%str(p)html = requests.get(url, headers=headers, timeout=8).textresponse = lxml.html.fromstring(html)return response

3.接下来就是正文,用requests获取网页,lxml解析,xpath匹配

def Spider(response, j):info = []new_date = response.xpath('//*[@id="cm_cr-review_list"]/div[%s]/div[1]/div[1]/span/text()' % str(j))# 爬取评论者名称new_name = response.xpath('//*[@id="cm_cr-review_list"]/div[%s]/div[1]/div[1]/div[1]/a/div[2]/span/text()' % str(j))# 爬取评论星级new_star = \response.xpath('//*[@id="cm_cr-review_list"]/div[%s]/div[1]/div[1]/div[2]/a/i/span/text()' % str(j))[0]# 爬取评论者购买sizenew_size = response.xpath('//*[@id="cm_cr-review_list"]/div[%s]/div[1]/div[1]/div[3]/a/text()' % str(j))# 爬取评论者购买颜色分类new_color = response.xpath('//*[@id="cm_cr-review_list"]/div[%s]/div[1]/div[1]/div[3]/a/text()[2]' % str(j))# 匹配评论者评论new_content = response.xpath('//*[@id="cm_cr-review_list"]/div[%s]/div[1]/div[1]/div[4]/span/span/text()' % str(j))# print(new_size, new_color)if len(new_name) == 0:new_name = response.xpath('//*[@id="cm_cr-review_list"]/''div[%s]/div[1]/div[1]/div[1]/div[1]/div[1]/a/div[2]/span/text()' % str(j))if len(new_color) == 0:new_color = new_sizenew_size = [None]info.append([new_date, new_name, new_color, new_size, new_star, new_content])return info

4.然后将获取的数据存入Mysql数据库

def save_mysql(info, ASIN):db = pymysql.connect(host='localhost', user='root', password='root', db='jisulife', charset='utf8mb4')cursor = db.cursor()sql_insert = 'INSERT INTO amazon_reviews(ASIN, A_date,A_name,A_size, A_color, A_star,A_content) ' \'VALUES (%s, %s, %s,%s,  %s, %s, %s)'new_info = info[0]cursor.execute(sql_insert,(ASIN, new_info[0][0], new_info[1][0], new_info[2][0], new_info[3][0],new_info[4][0], new_info[5][0]))db.commit()db.close()

5.设置主函数

if __name__ == '__main__':ASIN_list = pd.read_excel('E:\\WT\\project\\data\\ASIN.xls')['ASIN']cookie_list = pd.read_excel('E:\\WT\\project\\data\\cookie.xls')['cookie']cookie = random.choice(cookie_list)headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome''49.0.2623.112 Safari/537.36','cookie': cookie}for i in range(0, len(ASIN_list)):ASIN = ASIN_list[i]try:# 亚马逊评论页数最多500页for p in range(0, 500):res = get_response(ASIN, p, headers)for j in range(1, 11):info = Spider(res, j)save_mysql(info, ASIN)time.sleep(random.uniform(3, 5))except:pass

6.完整code如下

import requests
import lxml.html
import pandas as pd
import pymysql
import random
import time
def get_response(ASIN, p, headers):url = 'https://www.amazon.com/dp/product-reviews/' + str(ASIN) +'/ref=cm_cr_arp_d_paging_btm_prev_13?ie=UTF8&reviewerType=all_reviews&sortBy=recent' + '&pageNumber=%s'%str(p)html = requests.get(url, headers=headers, timeout=8).textresponse = lxml.html.fromstring(html)return response
def Spider(response, j):info = []new_date = response.xpath('//*[@id="cm_cr-review_list"]/div[%s]/div[1]/div[1]/span/text()' % str(j))# 爬取评论者名称new_name = response.xpath('//*[@id="cm_cr-review_list"]/div[%s]/div[1]/div[1]/div[1]/a/div[2]/span/text()' % str(j))# 爬取评论星级new_star = \response.xpath('//*[@id="cm_cr-review_list"]/div[%s]/div[1]/div[1]/div[2]/a/i/span/text()' % str(j))[0]# 爬取评论者购买sizenew_size = response.xpath('//*[@id="cm_cr-review_list"]/div[%s]/div[1]/div[1]/div[3]/a/text()' % str(j))# 爬取评论者购买颜色分类new_color = response.xpath('//*[@id="cm_cr-review_list"]/div[%s]/div[1]/div[1]/div[3]/a/text()[2]' % str(j))# 匹配评论者评论new_content = response.xpath('//*[@id="cm_cr-review_list"]/div[%s]/div[1]/div[1]/div[4]/span/span/text()' % str(j))# print(new_size, new_color)if len(new_name) == 0:new_name = response.xpath('//*[@id="cm_cr-review_list"]/''div[%s]/div[1]/div[1]/div[1]/div[1]/div[1]/a/div[2]/span/text()' % str(j))if len(new_color) == 0:new_color = new_sizenew_size = [None]info.append([new_date, new_name, new_color, new_size, new_star, new_content])return info
def save_mysql(info, ASIN):db = pymysql.connect(host='localhost', user='root', password='root', db='jisulife', charset='utf8mb4')cursor = db.cursor()sql_insert = 'INSERT INTO amazon_reviews(ASIN, A_date,A_name,A_size, A_color, A_star,A_content) ' \'VALUES (%s, %s, %s,%s,  %s, %s, %s)'new_info = info[0]cursor.execute(sql_insert,(ASIN, new_info[0], new_info[1], new_info[2], new_info[3],new_info[4], new_info[5]))db.commit()db.close()
if __name__ == '__main__':ASIN_list = pd.read_excel('E:\\WT\\project\\data\\ASIN.xls')['ASIN']cookie_list = pd.read_excel('E:\\WT\\project\\data\\cookie.xls')['cookie']cookie = random.choice(cookie_list)headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome''49.0.2623.112 Safari/537.36','cookie': cookie}for i in range(0, len(ASIN_list)):ASIN = ASIN_list[i]try:# 亚马逊评论页数最多500页for p in range(0, 500):res = get_response(ASIN, p, headers)for j in range(1, 11):info = Spider(res, j)save_mysql(info, ASIN)time.sleep(random.uniform(3, 5))except:pass

7.ASIN表、cookie表的排版如下图

Python实现通过ASIN爬取亚马逊产品评论相关推荐

  1. Python基于BeautifulSoup4库爬取亚马逊网页

    引言 我写的这个爬虫非常的简单,没有什么难的逻辑思维,只是简单运用BeautifulSoup进行爬取,相信初学者都可以看懂,就是代码写的比较乱,因为我也是初学者....可能你没有耐心看完,我会尽量一部 ...

  2. selenium爬取亚马逊商品评论

    亚马逊商品评论有反爬虫,所以就用selenium爬了.网速一定要好,不然爬的真的是天昏地暗.配合多线程就会快很多,这个不写了,爬的时候手动复制了N个代码去爬.还有一个点,中文和英文的设置,可以在评论里 ...

  3. 爬取亚马逊评论_如何利用插件抓取亚马逊评论和关键词?

    如何抓取亚马逊的商品评价? 原本想给大家介绍使用市面上常见或者付费的爬虫工具,直到我发现了这个Chrome的免费插件 --Instant Data Scraper,当时我差点被感动哭了.比起学编程语言 ...

  4. python爬取网页书籍名称代码_python爬取亚马逊书籍信息代码分享

    我有个需求就是抓取一些简单的书籍信息存储到mysql数据库,例如,封面图片,书名,类型,作者,简历,出版社,语种. 我比较之后,决定在亚马逊来实现我的需求. 我分析网站后发现,亚马逊有个高级搜索的功能 ...

  5. 爬虫(一):用python爬取亚马逊所有家具种类前100名的商品信息(上)

    目标 亚马逊公司(Amazon),是美国最大的一家网络电子商务公司,位于华盛顿州的西雅图,是网络上最早开始经营电子商务的公司之一,现在已成为全球商品品种最多的网上零售商和全球第二大互联网企业. 本次目 ...

  6. 爬虫(二):用python爬取亚马逊所有家具种类前100名的商品信息(下)

    目标 亚马逊公司(Amazon),是美国最大的一家网络电子商务公司,位于华盛顿州的西雅图,是网络上最早开始经营电子商务的公司之一,现在已成为全球商品品种最多的网上零售商和全球第二大互联网企业. 本次目 ...

  7. JAVA爬取亚马逊的商品信息

    在程序里面输入你想爬取的商品名字,就可以返回这件商品在亚马逊搜索中都所有相关商品的信息,包括名字和价格. 解决了在爬取亚马逊时候,亚马逊可以识别出你的爬虫,并返回503,造成只能爬取几个页面的问题. ...

  8. scrapy_redis分布式爬虫爬取亚马逊图书

    scrapy_redis分布式爬虫爬取亚马逊图书 最近在学习分布式爬虫,选取当当图书进行了一次小练习 网址,https://www.amazon.cn/gp/book/all_category/ref ...

  9. python 爬取亚马逊评论_用Python爬取了三大相亲软件评论区,结果...

    小三:怎么了小二?一副愁眉苦脸的样子. 小二:唉!这不是快过年了吗,家里又催相亲了 ... 小三:现在不是流行网恋吗,你可以试试相亲软件呀. 小二:这玩意靠谱吗? 小三:我也没用过,你自己看看软件评论 ...

最新文章

  1. altium Designer丝印显示汉字,更换字体,数码管风格,镂空效果
  2. 在一个集合S中寻找最大的C使A+B=C且A,B,C均在集合当中
  3. java9 反应编程_Java9第四篇-Reactive Stream API响应式编程
  4. c++进制转换_一文了解进制之间的原理和转换
  5. 【最佳实践】OSS开源工具ossutil-大文件断点续传
  6. LINUX开源监控平台Nagios(主机监控配置)
  7. 计算机IP掩码的与运算,计算机IP地址与子网掩码如何进行AND运算
  8. 在中国知网下载 PDF 格式的学位论文
  9. c++求100以内素数
  10. overleaf 改为XeLatex怎么操作
  11. android开发百度地图比例尺,androidsdk | 百度地图API SDK
  12. Mac重装系统-使用Mac笔记本制作U盘启动盘
  13. (一)Activiti 数据库25张表——一般数据1 (ACT_GE_BYTEARRAY)
  14. Python基础速成笔记(1)(适合有C/C++的基础)
  15. 计算机和电脑键盘进水怎么办,电脑键盘进水怎么办 电脑键盘进水解决方法
  16. android中生成excel
  17. 学vue前你需要知道的:vue生态圈
  18. Android记录15--关于ListView中adapter调用notifyDataSetChanged无效的原因
  19. 常微分方程数值解的c语言程序,常微分方程的数值解法 一阶常微分方程数值解的C语言编程实现.doc...
  20. 学生信息管理系统用php,PHP案例:学生信息管理系统

热门文章

  1. 你好,Jerry,我是 Tomcat
  2. 量子计算机 内存,理论上量子计算机的内存有多大?
  3. MQ消息积压了如何处理
  4. 十大项目管理知识-风险管理
  5. 张爱玲,冰雪聪明亦枉然!
  6. conserve与conservative
  7. mysql存储过程时间_mysql存储过程及日期函数实践
  8. CSAPP:DataLab实验
  9. UE4入门-常见基本数据类型-字符串(备忘)
  10. NYOJ6——喷水装置(一)(贪心)