中国大学MOOC“淘宝商品信息定向爬虫”实例(2022版)
目标:
获取淘宝搜索页面的信息
提取其中的商品名称和价格
(一)程序的结构设计:
1:提交商品搜索请求,循环获取页面
2:对于每个页面,提取商品名称和价格信息
3:将信息输出到屏幕上
(二)代码实现:
1:先构建出函数的整体框架
2: 对每一个函数具体的代码进行设计和编写
(三)解决只打印表头问题
(后续反爬虫问题)
嵩天老师
小数据孩儿来交笔记喽!!!
#淘宝商品信息定向爬虫
import requests #引入requests库获得链接
import re #引入正则表达式库获得相关内容
def getHTMLText(url): #爬取网页的通用代码框架try:r=requests.get(url,timeout=30) #获取页面的url链接r.raise_for_status() #如果状态不是200,引发HTTP Error异常r.encoding=r.apparent_encoding #修改编码return r.text #将网页的信息内容返回给其他部分except: #异常部分(如果出现错误,将返回一个空字符串)return ""
def parsePage(ilt,html): #设计和开发parsePage函数,是整个函数的关键try:plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"',html) #re 库的主要功能函数 ,反斜杠代表引用tlt = re.findall(r'\"raw_title\"\:\".*?\"',html)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}" #设计打印模板叫做tplt,大括号定义槽函数,第一个位置长度给4,中间位置长度为8,最后位置长度为16print(tplt.format("序号", "价格", "商品名称")) #打印表头count = 0 #定义一个输出信息的计数器for g in ilt:count = count + 1print(tplt.format(count, g[0], g[1])) #count代表商品序号,后面的分别代表商品的价格和商品的名称
def main(): #定义主函数goods = '书包' #搜索关键词,定义一个变量depth = 3 #向下一页爬取的深度start_url = 'https://s.taobao.com/search?q=' + goodsinfoList = [] #对整个的输出结果定义一个变量叫做infoListfor i in range(depth): #不同的页面是不同的urltry:url = start_url + '&s=' + str(44*i) #对每一个页面的url链接进行一个设计html = getHTMLText(url)parsePage(infoList, html)except:continueprintGoodsList(infoList) #这时候的结果信息保存在infoList中
main() #最后通过调用主函数来使整个程序运行
这样程序是写完了(嵩天老师原版代码)
但是打印出来的只有表头并没有商品信息
如何解决只打印表头的问题呢?
1、在淘宝官网搜索框中搜索“书包”
按“ctrl+shift+i”打开“开发人员工具”
(快捷键也许不同,自行查阅)
如下图:
网络、全部、选中箭头指向位置
(如果箭头位置不变
就去左面的搜索栏点击一下搜索)
在箭头下面的名称位置选择第一个
并右击弹出有复制的菜单
再选择复制为cURL(bash)
2、打开一个新的网址:https://curl.trillworks.com/
将上面复制的内容粘贴到下图红框的位置
(附图为粘贴完的效果)
3、将页面往下滑
将python requests框内的headers={**}
内容复制到如下下图位置
除了以上的变动外还要有以下变动
r=requests.get(url,timeout=30)
#改成
r=requests.get(url,headers=headers)
4、最终代码(我将代码'cookie','referer'隐藏了,每个人的都不一样,大家在上述操作中直接复制自己的headers内容即可,记得将cookie前的#号去掉,否则还是打印不出内容)
#爬取淘宝页面
import requests
import re
def getHTMLText(url):try:headers={'authority': 'suggest.taobao.com','accept': '*/*','accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',# Requests sorts cookies= alphabetically'cookie': '**********','referer': '*********','sec-ch-ua': '"Chromium";v="106", "Microsoft Edge";v="106", "Not;A=Brand";v="99"','sec-ch-ua-mobile': '?0','sec-ch-ua-platform': '"Windows"','sec-fetch-dest': 'script','sec-fetch-mode': 'no-cors','sec-fetch-site': 'same-site','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.47',}r=requests.get(url,headers=headers)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])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 = 0for g in ilt:count = count + 1print(tplt.format(count, g[0], g[1]))
def main():goods = '书包'depth = 3start_url = 'https://s.taobao.com/search?q=' + goodsinfoList = []for i in range(depth):try:url = start_url + '&s=' + str(44*i)html = getHTMLText(url)parsePage(infoList, html)except:continueprintGoodsList(infoList)
main()
5、 运行成功
笔记就到这里了,希望对大家有所帮助!!!
网络爬虫盗亦有道!!!
不要不加节制的爬取该网页呦!!!
中国大学MOOC“淘宝商品信息定向爬虫”实例(2022版)相关推荐
- 淘宝商品信息定向爬虫实例
1.说明 获得淘宝的搜索接口 淘宝搜索页面不允许爬虫爬取 不要不加限制的爬取次网站 2.代码 import re import requestsdef getHTMLText(url):try:hea ...
- Python爬虫学习笔记(实例:淘宝商品信息定向爬虫)
淘宝商品信息定向爬虫先贴代码,后看解析: #淘宝商品信息定向爬虫 import requests import re#获得页面 def getHTMLText(url):try:#headers = ...
- Python爬虫入门实例五之淘宝商品信息定向爬取(优化版)
文章目录 写在前面 一.爬取原页面 二.编程思路 1.功能描述 2.程序的结构设计 三.编程过程 1.解决翻页问题 2.编写getHTMLText()函数 3.编写parsePage()函数 (1). ...
- 淘宝商品信息定向爬虫
只用来学习请勿无限制使用爬虫 功能描述 目标:获取淘宝搜索页面的信息媒体去其中的商品名称和价格 程序的结构设计 步骤1:提交商品搜索请求,循环获取页面 步骤2:对每个页面,提取商品名称和价格信息 步骤 ...
- python爬淘宝的退货信息_Python——淘宝商品信息定向爬虫(requests+re)
有点崩,现在好像爬取不到任何东西了 目标:获取淘宝搜索页面的信息,提取其中的商品名称和价格 理解: 1.怎样去通过程序向淘宝提交请求,并获得提取的结果 2.怎样展示翻页的处理 首先我们要查看淘宝网的r ...
- Python爬虫 淘宝商品信息定向爬虫
代码: import requests import redef getHTMLText(url):try:r = requests.get(url, timeout=30)r.raise_for_s ...
- 爬虫9-淘宝商品信息定向爬虫
功能描述: 目标 获取淘宝搜索页面的信息,提取其中的商品信息名称和价格 理解 淘宝的搜索接口 翻页的处理 技术路线 requests re 当我们在淘宝上搜索书包时: 观察淘宝页面可知每一页共44个商 ...
- 利用Selenium爬取淘宝商品信息
文章来源:公众号-智能化IT系统. 一. Selenium和PhantomJS介绍 Selenium是一个用于Web应用程序测试的工具,Selenium直接运行在浏览器中,就像真正的用户在操作一样. ...
- 爬取淘宝商品信息selenium+pyquery+mongodb
''' 爬取淘宝商品信息,通过selenium获得渲染后的源码,pyquery解析,mongodb存储 '''from selenium import webdriver from selenium. ...
最新文章
- python http接口_python处理http接口请求
- 组网中交换机虚拟化技术的应用
- Linux开机详细流程
- javaweb基础(35)_jdbc处理oracl大数据
- hdfs源码分析第一弹
- Eclipse自动代码补全
- Nacos服务端流程图
- Linux获得命令帮助
- SAP RFC user 最小权限
- 计算机网络聚合怎么设置,交换机的端口聚合如何配置
- webpack静态资源地址注入html,Webpack4+ 多入口程序构建
- main函数中argc和argc参数解释
- 图的遍历(广度优先遍历)- 数据结构和算法61
- 计算机用户注册表修改,WindowsServer2012 注册表修改用户的连接数
- 基于zigbee的智能家用空气监测系统
- 【图论】	腾讯大战360
- win10做好备份如何恢复系统
- 电脑误删wps文件怎么恢复?介绍4个解决方法
- Consul + fabio 实现自动服务发现、负载均衡 1
- 微信重磅功能更新!加好友按人数收费,视频号付费订阅、微信版“知乎”来了...