Python爬取商品信息(一)
爬取淘宝网商品的名称,价格,付款人数
- 完整代码
- def getHTML()讲解
- def findMS(html)讲解
- def download(data)详解
- 需要改进的地方
步骤一:提交商品搜索请求,循环获取页面
对应函数:getHTML(url)
步骤二:对于每个页面,提取商品名称和价格信息
对应函数:findMS(html),其中ilt为结果的列表类型
步骤三:将信息保存到csv文件
对应函数:download(data)
完整代码
运行结果:
先上代码,再逐个分析函数。
import requests
import re
import csvdef getHTML():name = input('请输入爬取商品的名字:')start_url = 'https://s.taobao.com/search?q={}&s='.format(name)header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/70.0'}path = 'F:\mycookie.txt'with open(path, 'r')as f:mycookies = f.read()mycookies = mycookies.split(';')cookies = {}for cookie in mycookies:name, value = cookie.strip().split('=', 1)cookies[name] = valuepages = input('请输入爬取的商品页数:')goods = ''for i in range(int(pages)):url = start_url + str(i * 44)r = requests.get(url, headers=header, cookies=cookies, timeout=60)r.encoding = r.apparent_encodinggoods += r.textreturn goodsdef findMS(html):print('=' * 20, '正在爬取商品信息', '=' * 20, '\n')marketnames = re.findall('"nick":"(.*?)"', html)titles = re.findall('"raw_title":"(.*?)"', html)prices = re.findall('"view_price":"(.*?)"', html)pays = re.findall('"view_sales":"(.*?)"', html)data = []try:for i in range(len(titles)):data.append([marketnames[i], titles[i], prices[i],pays[i]])if data == '':print('=' * 20, '暂无此商品信息', '=' * 20, '\n')return dataprint('=' * 20, '爬取成功', '=' * 20, '\n')except:print('异常,爬取中断')return datadef download(data):print('=' * 20, '正在保存商品信息', '=' * 20, '\n')path = 'F:\goods.csv'try:f = open(path, "w", newline="")writer = csv.writer(f)writer.writerow(['店铺名称', '商品', '价格(单位:元)', '付款人数'])writer.writerows(data)print('=' * 20, '保存成功', '=' * 20, '\n')except:print('保存失败')f.close()def main():html = getHTML()data = findMS(html)download(data)if __name__ == "__main__":main()
def getHTML()讲解
变量
name:需要爬取的关键字
start_url:搜索商品后主页的url
打开淘宝网主页,搜索不同的商品后通过观察发现url: https://s.taobao.com/search?q=Nike是作为向淘宝提交查询关键词的链接接口,而q为引入关键词的变量。因此搜索不同的商品,只是q的值不同了,因此我们可以通过这个url打开要搜索的商品的搜索首页。
header:代理用户,在Chrome按F12打开页面源代码 – network – message header – request header
这里需要用到 HTTP基础知识,UA相关知识参考HTTP请求头之User-Agent
path:登录淘宝开始打开持续日记以获得登录信息(在登录页面F12,选中preserve log),点击Cookie复制保存到本地文件(F:\mycookie.txt)中
关于cookie可以学习cookie及通过cookie常见应用,有很多通过cookie来绕过登录的示例。
这一个程序就是先进行登录,再利用cookie来绕过之后的登录,进行商品信息爬取,再之后会进一步实现自动登录。pages:要查询的页数,从第一页开始
url:每页的url,有以下的观察:
起始页:
https://s.taobao.com/search?q=Nike&bcoffset=6&ntoffset=6&p4ppushleft=1%2C48&s=0
点击下一页(第二页):
https://s.taobao.com/search?q=Nike&bcoffset=3&ntoffset=3&p4ppushleft=1%2C48&s=44
点击下一页(第三页):
https://s.taobao.com/search?q=Nike&bcoffset=0&ntoffset=6&p4ppushleft=1%2C48&s=88
结论:可以观察到第一页的s=0,第二页,第三页中的s依次等,44,88。而一页正好有44个商品,因此可以猜测s为这一页的起始商品的编号,同时也可推算第4页的s为132(果然如此!)因此只需改变s的值就可以实现跳页啦r为响应对象,r.text为文本信息,r.content则是以二进制输出。可以学习requests库get和post方法使用。
因此方法getHTML()的最终返回结果goods是请求目标网站得到的文本(也即HTML)通过下面的findMS方法来找寻对我们有用的信息。
def findMS(html)讲解
查看网页源代码如下:
可以发现每件商品的相关信息都是用特征值标明的,其中"nick"表示店铺名称,raw_title表示商品名称,view_price表示价格,view_sales表示购买量,还有评论数量,店铺所在地等等信息。因此我们只需要提取特征值就可以了,使用正则表达式在html文本中搜寻即可。
补充学习关于正则表达式的基础教程和re.findall用法。将信息保存到data中,i表示搜索到的商品的数量。
def download(data)详解
已经搜寻到了商品的信息,将其保存到csv文件中会更方便查看和数据对比,python读写csv这部分内容比较简单,更多的是应用。
需要改进的地方
- 现在是先登录,然后记录cookie来绕过登录,下一步要实现的就是自动登录,从自动输入账号和密码开始,其中可能遇到验证的问题;
- 观察了一下淘宝的网页源代码商品信息用各个不同的特征值表现得非常明显,因此才可以使用findall加正则表达式,而天猫的源代码则是纯html文本,没有特征值进行区分,要再多找找规律;
- 对HTTP和网络等方面非常薄弱,要加油!
Python爬取商品信息(一)相关推荐
- Python爬取商品信息,包括标题、店铺、价格、评论数量、好评数、差评数、好评率
Python爬取电商商品信息,包括标题.店铺.价格.评论数量.好评数.差评数.好评率 对电商商城数据的爬取主要是评论数量的爬取,标题.店铺.价格等字段可以直接获取网页源码然后通过etree进行解析,但 ...
- python爬取商品信息_python爬取商品信息
原博文 2014-11-27 02:09 − 老严要爬某网购网站的商品信息,正好我最近在学python,就一起写了一个简单的爬虫程序. 需求:某网的商品信息,包括商品名,市场价和售价 工具:pytho ...
- python商品会员打折_双十一商品优惠打折,用Python爬取商品信息分析发现这里套路真深...
咱们今天就以京东笔记本电脑为例分析一下 首先咱们针对京东商城笔记本的网页进行分析,这回只要在网页源码上分析,就可以获取笔记本价格.标题.评论数.商家名称.商家性质. 想要学习Python.关注小编,私 ...
- python爬取商品信息_Python基于BeautifulSoup爬取京东商品信息
今天小编利用美丽的汤来为大家演示一下如何实现京东商品信息的精准匹配~~ HTML文件其实就是由一组尖括号构成的标签组织起来的,每一对尖括号形式一个标签,标签之间存在上下关系,形成标签树:因此可以说Be ...
- 苏宁易购网址爬虫爬取商品信息及图片
利用scrapy来爬取苏宁官网上任何商品的信息,主要的信息有商品标题.商品现价.商品原价.商铺名称,以及用scrapy的ImagesPipeline来下载商品图片. 部分主函数代码如下: # -*- ...
- Python 爬取网页信息并保存到本地爬虫爬取网页第一步【简单易懂,注释超级全,代码可以直接运行】
Python 爬取网页信息并保存到本地[简单易懂,代码可以直接运行] 功能:给出一个关键词,根据关键词爬取程序,这是爬虫爬取网页的第一步 步骤: 1.确定url 2.确定请求头 3.发送请求 4.写入 ...
- python爬取机票信息
python爬取机票信息 飞机和高铁列车不同,在同样的航线中有着不同的票价,借此我们希望获取尽量多的机票信息来分析机票的变化规律. 首先我们选取京东机票为爬取对象http://jipiao.jd.co ...
- python爬取控制台信息_python爬虫实战之爬取智联职位信息和博客文章信息
1.python爬取招聘信息 简单爬取智联招聘职位信息 # !/usr/bin/env python # -*-coding:utf-8-*- """ @Author ...
- Python爬取售房信息并保存至CSV文件
Python爬取售房信息并保存至CSV文件 在上一篇文章: Python爬取租房信息并保存至Excel文件,介绍了如何使用Python爬取租房信息并保存至Excel文件,在本案例中则是使用Python ...
最新文章
- linux mysql c语言编程,在Linux下通过C语言操作MySQL数据库
- SortedDictionaryTKey, TValue 类 表示根据键进行排序的键/值对的集合。
- 了解 ElasticSearch 这几个知识点后,查询起飞~
- 报名 | 清华园里的AI公开课!第三讲之神经网络
- php oauth2.0 实例,详解laravel passport OAuth2.0的4种模式
- matplotlib 笔记:使用TeX标记
- POJ 3635 Full Tank?
- [译] 用 Shadow DOM v1 和 Custom Elements v1 实现一个原生 Web Component
- theme editor android,谷歌宣布将于下月停用 Material Theme Editor
- 请求失败或服务器为及时响应,SQLServer(MSSQLSERVER)请求失败或服务未及时响应,有关详细信息,请参见事件日志或其他的适用的错误日志。...
- AutoCompleteTextView输入汉字拼音首字母实现过滤提示(支持多音字,Filterable的使用)...
- Julia: 如何读出csv文件中的中文字符?
- php开发pdf,使用PHP编写PDF(PDFLib)
- 嵌入式软件工程师面试遇到的经典题目
- 【vue】vue中如何实现SPA 单页面应用_09
- JavaWeb笔记——JSPThymeleaf
- confluence权限管理
- Linux怎么同步另一台设备的时间
- pytorch学习--UNet模型
- oracle表删除提示对象不存在,查询表结构报“ORA-04043: 对象XXX不存在”解决-Oracle...
热门文章
- 照片转3d模型_在线搭建3D场景
- 《软件工程(第4版?修订版)》—第2章2.6节实时系统的例子
- 孙荣辛|大数据穿针引线进阶必看——Google经典大数据知识
- OpenCV入门(十)——图像分割技术
- ArcGIS 栅格图层相关性分析
- winrar 免费压缩解压工具
- canvas图片裁剪并base64转化
- 远离内卷和无趣,我选择多元
- A66 TP5.0 html 引用外部js文件无效
- 论文阅读 | BMBC:Bilateral Motion Estimation with Bilateral Cost Volume for Video Interpolation