目标:获取淘宝搜索页面的信息,提取其中的商品名称和价格

程序的设计结构:

步骤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获取淘宝网搜索页面的商品名称和价格相关推荐

  1. 自学python 编程基础知识_自学Python的学习顺序,知识要点!附学习资料

    自学Python要按照什么样的学习顺序?首先要有一个详尽的学习大纲,对于学习Python的各种知识点要安排的详略得当,做到由易到难,循序渐进,才能长久的坚持学下去.除了基础的理论知识,项目实战也是自学 ...

  2. 自学python能成功吗_自学Python之路一

    从事ios开发有快两年的时间,之前没有养成自己写博客的习惯,只是看别人写的博客.在工作闲暇时看到关于开发语言的排行,python正在慢慢上涨,自己就想自学一下.也开通了博客来记录自己自学的过程. 学习 ...

  3. python中成绩分析函数_自学Python笔记:用Python做成绩分析(1)

    有朋友会问,刚学了一周,什么是面向对象都还不清楚就可以写程序?还有Python不是写"爬虫"吗? Python是面向对象的语言,函数.模块.数字.字符串都是对象,并且完全支持继承. ...

  4. 成中文自学python编程免费教程_自学python编程语言都有哪些免费网站值得收藏?...

    python是未来人工智能最好的编程语言,很多程序员在有其她编程基础的情况选择学习python是比较容易的,当然现在很多想进入编程界的新手选择python开始接触学习编程,但是由于经费有限,只能选择最 ...

  5. python语言要多久_自学Python一般需要多久

    自学Python一般需要多久 发布时间:2020-11-12 10:41:41 来源:亿速云 阅读:67 作者:小新 这篇文章主要介绍了自学Python一般需要多久,具有一定借鉴价值,需要的朋友可以参 ...

  6. 自学python可以考研吗_自学python现实吗?

    作为一名IT领域的科研教育工作者,我来说说我的看法. 首先,当前不论是大学生还是职场人,自学Python不仅比较现实,而且还有一定的必要性,随着工业互联网的发展,未来大量的岗位任务都需要借助于智能体来 ...

  7. 自学python能干什么工作_自学python能干什么

    Python是一种广泛使用的高级编程语言,属于通用型编程语言,是完全面向对象的语言.函数.模块.数字.字符串都是对象.经常被用于Web开发.GUI开发.操作系统.科学计算等应用范围. Python 是 ...

  8. python大概学多久_自学Python要学多久可以学会?

    如果是自学,从零基础开端学习python的话,按照每个人理解能力的不同,大致上需求半年到一年半左右的时刻,当然,如果有其它编程言语的经历,入门还是比较快的,大概需求2~3个月可以用Python言语编写 ...

  9. python商城源码_自学Python才几天,就成功编写出俄罗斯方块游戏,附自学教程

    人们常说,python不适合做游戏,但我偏爱玩游戏,做不了大的,做个小的也行啊. 于是,我在自己毫无基础的条件下,用两天时间学python基础理论,再用已有的俄罗斯方块游戏源码和源文件,在我的不懈努力 ...

  10. python在土木领域_自学python需要注意的问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Python确实容易上手,对初学者的门槛很低. 但是对于小白真正的门槛在于系统知识,这就和用什么语言完全没有任何关系了. 你不能让一个才会写print函数 ...

最新文章

  1. python2.7环境下“No module named matplotlib.pyplot”的解决办法
  2. Linux内核 sysctl.conf 优化设置
  3. 年薪50W+!懂这个的程序员就这么豪横!
  4. 如何将windows10的显示字体调大
  5. NOIP模拟测试5「星际旅行·砍树·超级树」
  6. java 移动页面中的图片上传_移动端上传图片(ajax跨域请求)
  7. requests模块(代理)篇
  8. C/C++——打开文件存储数据的各种方式
  9. 前端跳转页面 添加request headers_前端需要了解的 CORS 知识
  10. CSS学习笔记(二)选择器
  11. 二、常量、变量和基本数据类型
  12. 平安智慧城市总部智慧政务事业部总监张巍:平安智慧城市大数据应用实践分享
  13. 利用向量求点到线的最短距离
  14. python滑块验证(打码)+pillow裁剪图片
  15. 英语语音篇 - 拼读规则
  16. 游戏中BUFF的实现
  17. Angular 的 ngOnInit 和 Constructor 的区别
  18. 头条号平台单月流量分成近1亿,接下来要做内容付费
  19. Pathon 编写程序在屏幕中心绘制正方形
  20. HTML input 输入限制

热门文章

  1. @01.Python介绍
  2. 大家好,我是火旺技术,是一个每天都照镜子的男人。
  3. 【51单片机】:智能施工电梯系统
  4. three.js基础知识
  5. 各大博主们写的GIS基础知识普及的超棒的文章
  6. 25岁以后知道就太晚了 现在一个都不知道就太蠢了
  7. 全网最全 Selenium 相关资源汇总
  8. 高血压要检查什么项目?
  9. 初学编程入门基础教学视频,中文编程开发语言工具箱之豪华编辑构件,免费版中文编程软件下载
  10. java jdk structure中符号的含义