这一部分嵩天老师讲解的是对re库相关知识的应用,接下来将结合requests库一起对淘宝商品页面信息进行爬取。

说明:爬虫练习仅为学习,不做商用,如有侵权,烦请联系删除!

目标网页:淘宝搜索淘宝搜索是最智能的商品搜索引擎,通过大数据的运营,准确的理解商品与用户,提供精准的个性化搜索体验。https://s.taobao.com/

爬取目标:与淘宝网页搜索商品“拍立得”并打印商品名称和价格信息

相关库名:requests/re

目录

1.网页解析

2.代码设计

3. 运行结果

1.网页解析

打开网页版淘宝,并输入关键词“拍立得”,得到如下页面:

观察其链接,可以看到关键词位于q值之后:

https://s.taobao.com/search?q=拍立得&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.jianhua.201856-taobao-item.1&ie=utf8

翻页之后得到如下链接,对比之后发现末尾多了s=44,同样方法得到第三页可以发现末尾是s=88,而每页商品数量恰好是44个,所以接下来将通过改变s值进行翻页:

https://s.taobao.com/search?q=拍立得&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.jianhua.201856-taobao-item.1&ie=utf8&s=44

鼠标右键点击查看页面源代码,快捷键ctrl+F调出搜索框输入页面第一件商品的价格499.00查看价格信息所在位置,可知价格放置在view_price键值对中,使用同样的方法复制商品名称发现名称信息放置在raw_title键值对中,所以要提取商品名称和价格信息,只需要检索到对应的键值对名称并把其后的值提取出来即可:

2.代码设计

完整代码如下,其实只在嵩天老师提供的源代码基础上增加了headers请求头信息,相关讲解见注释:

#实例:淘宝商品比价定价爬虫
import requests
import redef getHTMLText(headers,url):
#定义获取网页源代码文本内容的函数try:r=requests.get(url,headers=headers,timeout=30)r.raise_for_status()r.encoding=r.apparent_encodingreturn r.textexcept:print('获取网页信息失败')def parsePage(ilt,html):
#定义解析页面信息的函数try:plt=re.findall(r'\"view_price\"\:\"[\d\.]*\"',html)#匹配view_price及其后的价格信息并保存在列表plt中tlt=re.findall(r'\"raw_title\"\:\".*?\"',html)#匹配raw_title及其后的名称信息并保存在列表plt中for i in range(len(plt)):price=eval(plt[i].split(':')[1])#将获得字符串用:分割并获取其后的价格信息title=eval(tlt[i].split(':')[1])#同样的方法获得名称信息ilt.append([price,title])#将价格和名称信息存入列表中except:print('获取价格和名称信息失败')def printGoodsList(ilt):
#定义打印信息的函数tplt='{:4}\t{:8}\t{:16}'print(tplt.format('序号','价格','商品名称'))count=0#定义一个计数器用于输出序号信息for g in ilt:count=count+1print(tplt.format(count,g[0],g[1]))#输出序号、价格、商品名称信息def main():goods='拍立得'#给出搜索的商品名称depth=2#指定爬取的页数start_url='https://s.taobao.com/search?q='+goods#给出初始链接infoList=[]#给出空列表用于存储商品信息headers = {'user-agent': '',       'cookie': ''}#输入自己的请求头身份信息for i in range(depth):try:print('正在处理第{}页信息'.format(i+1))url=start_url+'&s='+str(44*i)html=getHTMLText(headers,url)parsePage(infoList,html)except:print('获取信息失败')printGoodsList(infoList)main()

3. 运行结果

运行代码后,IDLE页面结果显示如下:

由于设置了try-except,所以一开始有错误时总是只打印表头和空列表却不报错,一开始还以为是网页爬取的问题,觉得可能是淘宝的反爬机制无法通过只给定user-agent和cookies破译,后面反复检查发现只是有一处拼写错误,这次吸取的教训就是,如果是练习的话,不设置try-except让它报错也无妨,这样纠正错误兴许还快一些。

参考资料:
嵩天. Python网络爬虫与信息提取[EB/OL].https://www.icourse163.org/course/BIT-1001870001.

嵩天《Python网络爬虫与信息提取》实例3:淘宝商品比价定向爬虫相关推荐

  1. 网络爬虫与信息提取--正则表达式---淘宝商品比价定向爬虫

    淘宝商品比价定向爬虫 本实例爬取时间2019.9.11 由于淘宝代码的不断完善更新,本爬取代码已经不能爬取出商品信息内容 原因:结果为空:打印html看到,需要登录淘宝 在网上找解决方法,可以复制co ...

  2. Python网络爬虫与信息提取笔记08-实例2:淘宝商品比价定向爬虫

    Python网络爬虫与信息提取笔记01-Requests库入门 Python网络爬虫与信息提取笔记02-网络爬虫之"盗亦有道" Python网络爬虫与信息提取笔记03-Reques ...

  3. 淘宝商品比价定向爬虫-Python网络爬虫与信息提取-北京理工大学嵩天教授

    功能描述 目标:获取淘宝搜索页面的信息,提取其中的商品名称和价格: 理解:淘宝的搜索接口.翻页的处理: 以课程中的搜索书包为例,对应的url如下: (1)起始页: (2)第二页:最后的s=44: (3 ...

  4. python爬虫笔记(六)网络爬虫之实战(1)——淘宝商品比价定向爬虫(解决淘宝爬虫限制:使用cookies)...

    1.  淘宝商品信息定向爬虫 链接: https://www.taobao.com/ 2. 实例编写 2.1 整体框架 # -*- coding: utf-8 -*-import requests i ...

  5. Python爬虫实例之淘宝商品比价定向爬取!爬虫还是很有意思的!

    这次就模仿之前做的总结进行初次尝试 目标:获取淘宝搜索页面的信息,提取其中的商品名称和价格 理解:获取淘宝的搜索接口淘宝页面的翻页处理 技术路线:requests--re 准备工作 获取淘宝搜索商品的 ...

  6. 爬虫(6)—— 淘宝商品比价定向爬虫

    该实例来源于中国大学慕课,视频教学链接如下: 传送门 目标: 获取淘宝搜索页面的额信息,提取其中的商品名称和价格 关键点: 淘宝的搜索接口 翻页的处理 从以上图片中可以看出,搜索接口的形式是: htt ...

  7. 基于python的购物比价毕设_【Python爬虫】淘宝商品比价定向爬虫

    #CrowTaobaoPrice.py importrequestsimportredef getHTMLText(url):#获得网页信息 headers = {'User-Agent': 'Moz ...

  8. 优化淘宝商品比价定向爬虫--爬虫的浏览器伪装

    目录 一. 原代码问题 二.淘宝Robots协议 三.User-Agent 四.查找headers和cookie 五. 完整代码 一. 原代码问题 爬取不到任何内容处理 原因:由于淘宝的设置,虽然可以 ...

  9. 淘宝商品价格定向爬虫

    淘宝商品价格定向爬虫 (1)  目标:获取淘宝搜索页面的信息,提取其中的商品名称和价格 要实现淘宝的搜索接口,翻页的处理.主要采用了Requests, bs4库,re库 (2)程序的结构设计: 步骤1 ...

  10. Python爬虫学习笔记(实例:淘宝商品信息定向爬虫)

    淘宝商品信息定向爬虫先贴代码,后看解析: #淘宝商品信息定向爬虫 import requests import re#获得页面 def getHTMLText(url):try:#headers = ...

最新文章

  1. 使用设置报头x-Frame-Options限制iframe网页嵌套
  2. java socket聊天工具_java+socket 简易聊天工具
  3. 大学物理实验试卷1到8_物理实验在绝对的“理论”面前就是“纸老虎”
  4. 【数据结构与算法】之深入解析“二叉树展开为链表”的求解思路与算法示例
  5. php上传大文件时,服务器端php.ini文件中需要额外修改的选项
  6. Java的文件流操作
  7. Tomcat发布网站知识集锦
  8. oracle sql core目录,oracle11g数据库常见故障处理.ppt
  9. Red5流服务器搭建(实现在线直播,流媒体视频播放和在线视频会议)
  10. win10计算机证书管理器,Win10系统如何设置管理文件加密证书
  11. 计算机编程语言排行榜—TIOBE世界编程语言排行榜(2020年6月份最新版)
  12. 去丹麦学计算机,哥本哈根大学计算机硕士经历
  13. 沧小海深入剖析xilinx的GTP/GTX核,掌握高速串行收发机制——第七章 GTP的IP核配置
  14. 智慧树知到等各大网课搜题接口及搜题公众号搭建教程
  15. transition transform属性造成文字抖动及模糊的解决方法
  16. 浙江大学ACM俱乐部 1036:镂空三角形
  17. 移动MAS短信技术错误代码和CMPP3.0错误代码表
  18. c语言:1000瓶水,有一瓶是有毒的,现共有10只老鼠,怎么判断毒水?
  19. 高中所学过的计算机知识,浅谈高中计算机学习重点论文
  20. python爬虫爬取歌曲_python爬虫实战:爬取全站小说排行榜

热门文章

  1. 自制Openerp图表
  2. 云计算时代:哪些企业适合上云?
  3. Redhat8认证考试(第三题)
  4. 业务架构实践:一步一步画出业务架构图
  5. 中高端时代趁势而来,本就艰难的酒店企业如何顺势而为
  6. 《早秋客舍》赏析-[唐]杜牧古诗
  7. 如何用C语言编写简单的推箱子小游戏
  8. Ubuntu系统修复GUID格式GPT硬盘的引导
  9. 使用SQLite打开本地.db文件
  10. 内容创业洗稿,知识付费拆书