python 淘宝搜索_自学python之爬虫2获取淘宝网搜索页面的商品名称和价格
目标:获取淘宝搜索页面的信息,提取其中的商品名称和价格
程序的设计结构:
步骤1:提交商品获取请求,循环获取页面
步骤2:对于每个页面,提取商品名称和价格信息
步骤3:将信息输到屏幕上
在淘宝网站的搜索框中输入关键词 如“书包”,点击搜索,查看结果首页的url为:
https://s.taobao.com/search?q=%E4%B9%A6%E5%8C%85&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.50862.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170909
第二页的url:
https://s.taobao.com/search?q=%E4%B9%A6%E5%8C%85&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.50862.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170909&bcoffset=4&ntoffset=4&p4ppushleft=1%2C48&s=44
第三页的url:
https://s.taobao.com/search?q=%E4%B9%A6%E5%8C%85&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.50862.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170909&bcoffset=4&ntoffset=4&p4ppushleft=1%2C48&s=88
发现url的不同在于:从第二页开始,每一页最后的s=xx,而xx是44的倍数,因为结果页每页有44个商品。
找到规律后就可以构建请求的url:
start_url = 'https://s.taobao.com/search?q=' + queryword + '&s=' + str(44*(pagenum-1))
接下来可以发送请求进行爬取,获取的页面后,就可以提取商品的名称和价格。
查看源代码找到对应的信息:
可以看到商品名称和价格分别对应于 'raw_title'和'view_price',且以键值对的形式存储,可以使用正则表达式来匹配满足条件的字符串并存储到列表中
商品价格:plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"',html)
商品名称:tlt = re.findall(r'\"raw_title\"\:\".*?\"',html)
此时,这两个列表中的数据为:
plt = ["view_price":"62.00" , "view_price":"70.00" ...]
tlt = ["raw_title":"书包小学生儿童xxx" , "raw_title":"中学生书包xxx" ...]
接下来获取价格和名称的值,并存储到新的列表中
infoList = []
for i in range(len(plt)):
price = eval(plt[i].split(':')[1])
title = eval(tlt[i].split(':')[1])
infolist.append([price , title])
这样,就把每个商品的名称和价格提取出来了
infolist = [["62.00","书包小学生儿童xx"] , ["70.00",''中学生书包xx"] ...]
最后,格式化信息并输出。
代码如下:
1 importrequests2 importre3
4 #获取页面
5 defgetHTMLText(url):6 try:7 r = requests.get(url, timeout=30)8 r.raise_for_status()9 r.encoding =r.apparent_encoding10 returnr.text11 except:12 return "get fail"
13
14 #解析页面
15 defparsePage(ilt, html):16 try:17 plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"',html) #商品价格
18 tlt = re.findall(r'\"raw_title\"\:\".*?\"',html) #商品名称
19 for i inrange(len(plt)):20 price = eval(plt[i].split(':')[1])21 title = eval(tlt[i].split(':')[1])22 ilt.append([price , title])23 except:24 print('parse fail')25
26 #输出商品信息
27 defprintGoodsList(ilt):28 tplt = "{:4}\t{:8}\t{:16}"
29 print(tplt.format("序号", "价格", "商品名称"))30 count =031 for g inilt:32 count = count + 1
33 print(tplt.format(count, g[0], g[1]))34
35 #主函数
36 defmain():37 goods = '书包' #搜索关键词
38 depth = 2 #搜索深度,即页数
39 start_url = 'https://s.taobao.com/search?q=' +goods40 infoList =[]41 for i inrange(depth):42 try:43 url = start_url + '&s=' + str(44*i)44 html =getHTMLText(url)45 parsePage(infoList, html)46 except:47 continue
48 printGoodsList(infoList)49
50 main()
结果:
python 淘宝搜索_自学python之爬虫2获取淘宝网搜索页面的商品名称和价格相关推荐
- 自学python 编程基础知识_自学Python的学习顺序,知识要点!附学习资料
自学Python要按照什么样的学习顺序?首先要有一个详尽的学习大纲,对于学习Python的各种知识点要安排的详略得当,做到由易到难,循序渐进,才能长久的坚持学下去.除了基础的理论知识,项目实战也是自学 ...
- 自学python能成功吗_自学Python之路一
从事ios开发有快两年的时间,之前没有养成自己写博客的习惯,只是看别人写的博客.在工作闲暇时看到关于开发语言的排行,python正在慢慢上涨,自己就想自学一下.也开通了博客来记录自己自学的过程. 学习 ...
- python中成绩分析函数_自学Python笔记:用Python做成绩分析(1)
有朋友会问,刚学了一周,什么是面向对象都还不清楚就可以写程序?还有Python不是写"爬虫"吗? Python是面向对象的语言,函数.模块.数字.字符串都是对象,并且完全支持继承. ...
- 成中文自学python编程免费教程_自学python编程语言都有哪些免费网站值得收藏?...
python是未来人工智能最好的编程语言,很多程序员在有其她编程基础的情况选择学习python是比较容易的,当然现在很多想进入编程界的新手选择python开始接触学习编程,但是由于经费有限,只能选择最 ...
- python语言要多久_自学Python一般需要多久
自学Python一般需要多久 发布时间:2020-11-12 10:41:41 来源:亿速云 阅读:67 作者:小新 这篇文章主要介绍了自学Python一般需要多久,具有一定借鉴价值,需要的朋友可以参 ...
- 自学python可以考研吗_自学python现实吗?
作为一名IT领域的科研教育工作者,我来说说我的看法. 首先,当前不论是大学生还是职场人,自学Python不仅比较现实,而且还有一定的必要性,随着工业互联网的发展,未来大量的岗位任务都需要借助于智能体来 ...
- 自学python能干什么工作_自学python能干什么
Python是一种广泛使用的高级编程语言,属于通用型编程语言,是完全面向对象的语言.函数.模块.数字.字符串都是对象.经常被用于Web开发.GUI开发.操作系统.科学计算等应用范围. Python 是 ...
- python大概学多久_自学Python要学多久可以学会?
如果是自学,从零基础开端学习python的话,按照每个人理解能力的不同,大致上需求半年到一年半左右的时刻,当然,如果有其它编程言语的经历,入门还是比较快的,大概需求2~3个月可以用Python言语编写 ...
- python商城源码_自学Python才几天,就成功编写出俄罗斯方块游戏,附自学教程
人们常说,python不适合做游戏,但我偏爱玩游戏,做不了大的,做个小的也行啊. 于是,我在自己毫无基础的条件下,用两天时间学python基础理论,再用已有的俄罗斯方块游戏源码和源文件,在我的不懈努力 ...
- python在土木领域_自学python需要注意的问题
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Python确实容易上手,对初学者的门槛很低. 但是对于小白真正的门槛在于系统知识,这就和用什么语言完全没有任何关系了. 你不能让一个才会写print函数 ...
最新文章
- python2.7环境下“No module named matplotlib.pyplot”的解决办法
- Linux内核 sysctl.conf 优化设置
- 年薪50W+!懂这个的程序员就这么豪横!
- 如何将windows10的显示字体调大
- NOIP模拟测试5「星际旅行·砍树·超级树」
- java 移动页面中的图片上传_移动端上传图片(ajax跨域请求)
- requests模块(代理)篇
- C/C++——打开文件存储数据的各种方式
- 前端跳转页面 添加request headers_前端需要了解的 CORS 知识
- CSS学习笔记(二)选择器
- 二、常量、变量和基本数据类型
- 平安智慧城市总部智慧政务事业部总监张巍:平安智慧城市大数据应用实践分享
- 利用向量求点到线的最短距离
- python滑块验证(打码)+pillow裁剪图片
- 英语语音篇 - 拼读规则
- 游戏中BUFF的实现
- Angular 的 ngOnInit 和 Constructor 的区别
- 头条号平台单月流量分成近1亿,接下来要做内容付费
- Pathon 编写程序在屏幕中心绘制正方形
- HTML input 输入限制