爬虫(二):用python爬取亚马逊所有家具种类前100名的商品信息(下)
目标
亚马逊公司(Amazon),是美国最大的一家网络电子商务公司,位于华盛顿州的西雅图,是网络上最早开始经营电子商务的公司之一,现在已成为全球商品品种最多的网上零售商和全球第二大互联网企业。
本次目标是爬取亚马逊所有家具种类销售排行榜前100名的商品排名信息。
上一篇博客已经把所有家具种类,以及种类页面链接爬取出来
接下来是根据这些种类链接,分析页面HTML,得到该家具种类前100名商品的排名、照片链接、商品链接、标题、星级、评论数、最低价格和最高价格
代码
import requests
from lxml import etree
import pandas as pd
from pandas import DataFrame
import time
import redef gethtml(url0, head):i = 0while i < 5:try:html = requests.get(url=url0, headers=head, timeout=(10, 20))repeat = 0while (html.status_code != 200): # 错误响应码重试print('error: ', html.status_code)time.sleep(20 + repeat * 5)if (repeat < 5):repeat += 1html = requests.get(url=url0, headers=head, timeout=(10, 20))return htmlexcept requests.exceptions.RequestException:print('超时重试次数: ', i + 1)time.sleep(1)i += 1raise Exception()hea = {'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9','accept-encoding': 'gzip, deflate, br','accept-language': 'zh-CN,zh;q=0.9,en;q=0.8','cache-control': 'max-age=0','downlink': '8','ect': '4g','rtt': '250','Cookie': "session-id=134-0636042-0633818; session-id-time=2082787201l; i18n-prefs=USD; lc-main=zh_CN; sp-cdn=\"L5Z9:HK\"; x-wl-uid=1+h+8IhdF3lb3loyXLwiMOfz3PH6woTCuzvYabJv1d81BUtVw5TivYIXiDZAsh9cD2nneHGwuI88=; ubid-main=131-3884934-2925229; session-token=ZK8ZbeTD4tYIbKhfb3ovzTNSyFhCCiVB11MxESFEcen0QcGOLJsPZyJGuYVXhbc8UHxlfxi3jlhqH2/Vi1r5e5JUC6VtDJ3SYr1BHKeJ/ojd1NXXiFPsvhS6vfu4DLGXTLXp09O74a2y6RJ819FBo+te0ipxQIzfDGe8Zl4AJR1vUO6i0dyTc+SaewPDubDb; csm-hit=tb:X1TAAK5TV6CYS0QH19GC+s-V75NP7RDRN9BM9MW71CX|1594957493721&t:1594957493721&adb:adblk_no",'upgrade-insecure-requests': '1','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36'
}df = DataFrame({'类别': {},'排名': {},'照片链接': {},'商品链接': {},'标题': {},'星级': {},'评论数': {},'低价格': {},'高价格': {},})path = 'C:/myfile/project/amazon_mining/data/排名链接.csv'
df_type = list(pd.read_csv(path)['类别'])
df_link = list(pd.read_csv(path)['链接'])for link in range(0,len(df_link)):time.sleep(2)for j in range(1,3):url0 = df_link[link]url1 = url0.split('ref=', 2)[0]url2 = "ref=zg_bs_pg_%s?_encoding=UTF8&pg=%s" % (str(j), str(j))url = url1 + url2print(url)req = gethtml(url, hea)html = etree.HTML(req.text)time.sleep(10)for i in range(0,50):z = i + (j-1)*50 + link*100 # 调整序号df.loc[z, '类别'] = df_type[link]a1 = html.xpath('//li[@class="zg-item-immersion"][%s]//span[@class="zg-badge-text"]/text()' %str(i+1)) # 50个if (len(a1) == 0):df.loc[z, '排名'] = '***' # 有的链接前100名中并没有100个商品continuea2 = html.xpath('//li[@class="zg-item-immersion"][%s]//div[@class="a-section a-spacing-small"]/img/@src' %str(i+1))a3 = html.xpath('//li[@class="zg-item-immersion"][%s]//div[@class="a-section a-spacing-small"]/img/@alt' %str(i+1))a7 = html.xpath('//li[@class="zg-item-immersion"][%s]/span/div/span/a/@href' %str(i+1))if (len(a2) == 0 and len(a3) == 0):df.loc[z, '照片链接'] = '###' # 有的商品有排名,但已经不存在 --- This item is no longer availabledf.loc[z, '标题'] = '###'continuea4 = html.xpath('//li[@class="zg-item-immersion"][%s]//span[@class="a-icon-alt"]/text()' %str(i+1))a5 = html.xpath('//li[@class="zg-item-immersion"][%s]//a[@class="a-size-small a-link-normal"]/text()' %str(i+1))a6 = html.xpath('//li[@class="zg-item-immersion"][%s]//span[@class="p13n-sc-price"]/text()' %str(i+1))a7 = html.xpath('//li[@class="zg-item-immersion"][%s]/span/div/span/a/@href' %str(i+1)) # 商品链接df.loc[z, '排名'] = a1[0]df.loc[z, '照片链接'] = a2[0]df.loc[z, '标题'] = a3[0]df.loc[z, '商品链接'] = "https://www.amazon.com/" + a7[0]if (len(a4) == 0):df.loc[z, '星级'] = 0else:if ('star' in a4[0]):x_star = a4[0].split(' out', 2)[0] # 提取星级数--英文df.loc[z, '星级'] = x_starif ('星' in a4[0]):x_star = re.findall(r".*平均 (.*) 星.*", a4[0])[0] # 提取星级数--中文df.loc[z, '星级'] = x_starif (len(a5) == 0):df.loc[z, '评论数'] = 0else:df.loc[z, '评论数'] = a5[0].replace(',', '')if (len(a6) == 2):df.loc[z, '低价格'] = a6[0]df.loc[z, '高价格'] = a6[1]elif(len(a6) == 1):df.loc[z, '低价格'] = a6[0]df.loc[z, '高价格'] = 0elif(len(a6) == 0):df.loc[z, '低价格'] = 0df.loc[z, '高价格'] = 0path0 = 'C:/myfile/project/amazon_mining/data/排名.csv'
df.to_csv(path0, encoding='utf-8', index=False) # 去掉index,保留头部
代码简要解析
def gethtml(url0,head)
gethtml函数是为了得到静态页面HTML,有对页面反应超时的情况做了些延时处理
结果
得到所有家具种类前100名的商品信息
爬虫(二):用python爬取亚马逊所有家具种类前100名的商品信息(下)相关推荐
- 爬虫(一):用python爬取亚马逊所有家具种类前100名的商品信息(上)
目标 亚马逊公司(Amazon),是美国最大的一家网络电子商务公司,位于华盛顿州的西雅图,是网络上最早开始经营电子商务的公司之一,现在已成为全球商品品种最多的网上零售商和全球第二大互联网企业. 本次目 ...
- python抓取亚马逊某个类目下Top 100排名的商品
1.获取分页url 列表 2. 获取详情页url列表 3. 获取详情页数据 import requests from lxml import etree import urllib3 import t ...
- python 爬取亚马逊评论_用Python爬取了三大相亲软件评论区,结果...
小三:怎么了小二?一副愁眉苦脸的样子. 小二:唉!这不是快过年了吗,家里又催相亲了 ... 小三:现在不是流行网恋吗,你可以试试相亲软件呀. 小二:这玩意靠谱吗? 小三:我也没用过,你自己看看软件评论 ...
- 使用python爬取亚马逊商品switch到货通知、价格,并发送email通知
#!/usr/bin/env python # coding: utf-8# In[2]:import pandas as pd import requests from bs4 import Bea ...
- python爬取网页书籍名称代码_python爬取亚马逊书籍信息代码分享
我有个需求就是抓取一些简单的书籍信息存储到mysql数据库,例如,封面图片,书名,类型,作者,简历,出版社,语种. 我比较之后,决定在亚马逊来实现我的需求. 我分析网站后发现,亚马逊有个高级搜索的功能 ...
- Python基于BeautifulSoup4库爬取亚马逊网页
引言 我写的这个爬虫非常的简单,没有什么难的逻辑思维,只是简单运用BeautifulSoup进行爬取,相信初学者都可以看懂,就是代码写的比较乱,因为我也是初学者....可能你没有耐心看完,我会尽量一部 ...
- Python实现通过ASIN爬取亚马逊产品评论
Python实现通过ASIN爬取亚马逊产品评论 一.最近一直在研究爬取亚马逊评论相关的信息,亚马逊的反爬机制还是比较严格的,时不时就封cookie啊封ip啊啥的.而且他们的网页排版相对没有那么规则,所 ...
- scrapy_redis分布式爬虫爬取亚马逊图书
scrapy_redis分布式爬虫爬取亚马逊图书 最近在学习分布式爬虫,选取当当图书进行了一次小练习 网址,https://www.amazon.cn/gp/book/all_category/ref ...
- JAVA爬取亚马逊的商品信息
在程序里面输入你想爬取的商品名字,就可以返回这件商品在亚马逊搜索中都所有相关商品的信息,包括名字和价格. 解决了在爬取亚马逊时候,亚马逊可以识别出你的爬虫,并返回503,造成只能爬取几个页面的问题. ...
最新文章
- 洛谷 P1111 修复公路(最小生成树)
- malloc,free,new,delete解析(原)
- AppleScript 快速入门
- ArcGIS实验教程——实验十四:空间数据库的建立
- 信息学奥赛一本通(2060:【例1.1】计算机输出)
- 一组飒气十足的商务海报PSD分层海报
- python语言的三种数字类型_Python语言中的类型之数字类型--Python(10)
- 7位格雷码计算风向_七哥特刊|从二轮秀到队内得分王 格雷厄姆会新的蜂王吗?...
- ElasticSearch 2 (18) - 深入搜索系列之控制相关度
- 详解native方法的使用
- 2017北航计算机系学硕最低录取分,2018北航计算机考研初试经验帖
- “知识付费”里有知识吗?
- Hello World, Hello Me | 图灵人工智能书单
- sql服务器虚拟内存不足,SQL Server虚拟内存不足的解决方法
- 数学之美:《社交网络》中Facemash算法分析
- 2022年最新最全uniapp入门学习,零基础入门uniapp到实战项目,unicloud数据后台快速打造uniapp小程序项目
- 多个地点按距离远近进行排序
- 神经网络与深度学习三:编写单隐层神经网络
- 清华教授花费1年总结python学习路线共26章,学会它offer拿到手软
- 国产手机以价格战争锋折叠手机,然而定价权却在三星手上