这次就模仿之前做的总结进行初次尝试

  • 目标:获取淘宝搜索页面的信息,提取其中的商品名称和价格
  • 理解:获取淘宝的搜索接口淘宝页面的翻页处理
  • 技术路线:requests——re

准备工作

  • 获取淘宝搜索商品的关键字接口

如下图,自然而然地看见网址中地keyword后面,赫然地跟着“海贼王手办”,几个大字

旧版是 q= 后面连接关键字,这里只是教你怎么看

  • 获取翻页的关键字接口

尝试翻页之后,发现page后面对应的页码变为2,所以改变page的就翻页了

这个是新版的,旧版的是s作为关键字,44的倍数一页

  • 查看robots协议,查看是否允许进行爬取

如下图,好吧,这个我也忘记了,看一下什么意思

根据基本语法知道,淘宝是不允许所有的爬虫对根目录进行爬取的,但是用于技术探讨应该是可以的

  • 如果要获取商品信息的提取范式,需要查看商品信息的表达式形式,于是我打开了网页

如下图,好吧,搜索之下并没有任何发现,似乎没有将信息保存在网页

于是乎我打开某个商品的页面,并查看源代码好吧,所有的信息都是写在标签里面的,教程里面的信息并没有出现

由此发现,淘宝已经有了改良,商品的信息已经不写在html页面中,没有办法直接爬取

但是作为一个练手的项目,可以参照视频里面的版本进行一下分析和讲解,如下图

价格的图片段,“view_price”:“127.00”

分析为正则表达式:“view_price”:"[\d.]*"

名称段,“raw_title”:“超牛娜娜包”

分析成正则表达式:“raw_title”:"[.]*"

程序编写

  • 第一步,确定步骤,并将所有的步骤提交商品的搜索请求,获取页面 getHTMLText()对于每个页面,提取商品的名称和价格信息 parsePage()将信息输出到屏幕上 printGoodList()采用main函数将所有的函数连接起来

代码:

# 获取相关的HTML页面信息
# url是网页的连接
def getHTMLtext(url):return''# 获取各个商品的信息
# html是爬取到本地的HTML内容
# ilt是用来存放商品信息的html页面
def parsePage(ilt,html):print('')# 将商品输入到屏幕上
# ilt是容纳对应的商品的信息的列表
def printMessage(ilt):print()# 用main函数将所有的网页链接起来
# 重点在于翻页的方式,获取翻页的关键字
def main():goods = '书包'depth = 2start_url = 'http://a.taobao.com/search?q=' + goodsinfolist = []for i in range(2):try:url = start_url+'&s=' + str(44*i)html = getHTMLtext(url)parsePage(infolist,html)except:continueprintMessage(infolist)main()
12345678910111213141516171819202122232425262728293031323334
  • 第二步,完善各个步骤的方法

逐步完善各个部分的代码

  • 第一部分完善getHTMLtext(url),常规的爬取页面的方式,基本上不变
# 获取相关的HTML页面信息
def getHTMLtext(url):try:r = requests.get(url,timeout = 30)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:return''
123456789
  • 第二部分,完善parsePage()分析爬取页面(parse描述),不同于以往的BeautifulSoup库查找标签,这里用正则表达式
# 获取各个商品的信息
def parsePage(ilt,html):try:plt = re.findall(r'\"view_price\"\:\"[\d.]*\"',html)tlt = re.findall(r'\"raw_title\"\:\".*?\"',html)//根据很久以前的网页得到的信息格式for i in range(len(plt)):price = eval(plt[i].split(':')[1])# eval()函数,将对应的数据外层的双引号或者是单引号去掉# 注意,提取之后是作为字符串存在的,然后用”:“将之拆分,仅仅只取后面的值title = eval(tlt[i].split(':')[1])ilt.append([price.title])except:print('')
1234567891011121314
  • 第三部分,采用格式输出的方式,用format函数,先规定输出的格式,然后逐个输出
# 将商品输入到屏幕上
def printMessage(ilt):tplt = '{:4}\t{:8}\t{:16}'# 定义输出的模板print(tplt.format("序号","价格","商品名称"))count = 0for g in ilt:count = count + 1print(tplt.format(count,g[0],g[1]))
123456789

代码总结

import re
import requests# 获取相关的HTML页面信息
def getHTMLtext(url):try:r = requests.get(url,timeout = 30)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:return''# 获取各个商品的信息
def parsePage(ilt,html):try:plt = re.findall(r'\"view_price\"\:\"[\d.]*\"',html)tlt = re.findall(r'\"raw_title\"\:\".*?\"',html)for i in range(len(plt)):price = eval(plt[i].split(':')[1])# eval()函数,将对应的数据外层的双引号或者是单引号去掉title = eval(tlt[i].split(':')[1])ilt.append([price.title])except:print('')# 将商品输入到屏幕上
def printMessage(ilt):tplt = '{:4}\t{:8}\t{:16}'# 定义输出的模板print(tplt.format("序号","价格","商品名称"))count = 0for g in ilt:count = count + 1print(tplt.format(count,g[0],g[1]))# 用main函数将所有的网页链接起来
def main():goods = '书包'depth = 2start_url = 'http://a.taobao.com/search?q=' + goodsinfolist = []for i in range(2):try:url = start_url+'&s=' + str(44*i)html = getHTMLtext(url)parsePage(infolist,html)except:continueprintMessage(infolist)main()
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253

总结

  • 我们平常在浏览网页的时候,发现很多的页面是需要登录才能使用,那么爬虫怎么爬取?其实我也不知道,但是我想攻克,在下一篇博客我一定会写这方面的信息
  • 现今为止,筛选网上的信息,我们有两种方式方式一:使用BeautifulSoup库,信息包含在标签中方式二:使用正则表达式,整个页面中进行爬取
  • 现今为止,我们常用的输出方式,使用format函数,先是写出对应的输出格式,然后再分布填入其中
  • 对于关键字,通过之前的几个例子发现,无论是翻页,还是搜索都会映射到网址中的对应的关键字,所以要回看关键字

源码获取加群:850591259

Python爬虫实例之淘宝商品比价定向爬取!爬虫还是很有意思的!相关推荐

  1. python爬虫学习笔记(三)——淘宝商品比价实战(爬取成功)

    2020年最新淘宝商品比价定向爬取 功能描述 目标:获取淘宝搜索页面的信息,提取其中的商品名称和价格. 理解:淘宝的搜索接口 翻页的处理 技术路线:requests­          re 程序的结 ...

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

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

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

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

  4. python日记Day23——爬虫实例之淘宝商品定价

    python日记--爬虫实例之淘宝商品定价 需求:爬取淘宝网站手机页面并输出商品名称和价格,实现多页爬取且内容需保存到excel 步骤: getHtml():获取页面信息 parsePage():实现 ...

  5. python爬虫—关于淘宝商品的爬取

    之前爬过一次淘宝,当时这个网站没怎么设置很厉害的反爬措施,能够很轻松地获取上面的数据:销量啊.价格啊.以及好评等等,做一些可视化的图表,对于将要在淘宝平台售卖商品的商家具有很好的参考意义. 现在的淘宝 ...

  6. Python爬虫实例 wallhaven网站高清壁纸爬取。

    文章目录 Python爬虫实例 wallhaven网站高清壁纸爬取 一.数据请求 1.分析网页源码 2.全网页获取 二.数据处理 1.提取原图所在网页链接 2.获取高清图片地址及title 三.下载图 ...

  7. 淘宝众筹数据爬取(1)

    众筹是现阶段小微或初创企业比较重要的融资渠道之一,也获得了很多研究者的关注.然而众筹的研究需要获取众筹项目的大量数据,单靠手工录入数据确实比较让人讨厌, 速度慢也比较啰嗦.前文中我们已经了解了静态网页 ...

  8. Python爬虫入门实例八之股票数据定向爬取并保存(优化版)

    文章目录 写在前面 一.准备工作 1.功能描述 2.候选数据网站的选择 3.程序的结构设计 4.本篇选取的数据网站 (1)网站链接 (2)网站内容 二.数据网站分析 1.股票列表的分析 2.个股信息的 ...

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

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

最新文章

  1. linux 脚本向标准输入,linux中的标准输出和输入
  2. 《奇思妙想》人物篇--图灵奖得主概览
  3. stl的complex(二)
  4. github使用ssh key
  5. 第三章 安装apache
  6. Android之Dialog提示Unable to add window -- token is not valid; is your activity running?
  7. mac android屏幕演示,如何在Mac上录制Android设备的屏幕 | MOS86
  8. OpenVINO(Version: 2021.3)系统需求
  9. Action类为何要继承ActionSupport
  10. EOS技术研究:合约与数据库交互
  11. 第二章 tcp/ip
  12. shopify 与国内第三方建站服务平台的比较(店匠、shopline、shopyy、ueeshop)
  13. 迅雷9边下边播绑定第三方播放器
  14. 哐筹甍颚往往能够用它实现
  15. 使用谷歌Chrome浏览器将网页保存为html格式
  16. 移动端、后台管理、大屏可视化等项目rem适配(postcss-pxtorem、amfe-flexible)。已自测
  17. 个人永久性免费-Excel催化剂功能第91波-地图数据挖宝之行政区域信息实时下载(含经纬度)...
  18. 《邂逅美丽》之赏析2
  19. 别喷了!程序员需不需要考研!
  20. 呼呼哈哈自用--坦克学习截图

热门文章

  1. linux 下MySQL本地安装mysql - u root - p 无法登入
  2. win10电脑自带的office突然变成英文解决办法
  3. SVL-VI SLAM
  4. 腾讯云域名的报价表收费标准和活动报价
  5. 打散线条lisp_cad细线模式(cad中宽线炸开后变成细线是怎么回事)
  6. CVF转IVF可能遇到的问题
  7. Mac系统空格预览放大图片
  8. 小学计算机教师证面试题目,2019下半年小学信息技术教师资格面试真题完整版...
  9. yaml配置Mybatis
  10. Geoffrey Hinton