目录

  • 一.前言:
  • 二.前期准备:
    • 1.如何绕过防爬虫
    • 2.一些常见的问题及处理方法:
  • 三.爬虫实例结构分析:
    • 1.主体结构:
    • 2.分析:
      • (1)爬虫可行性:
      • (2)网站数据结构
  • 四.爬虫实例展示:
    • 1.爬虫实例代码:
    • 2.运行效果图:

一.前言:

网络爬虫有许多种类,其中定向爬虫是比较常见的,而我们在淘宝购物,会发现有很多商品信息,如何才能信息汇总显示,如何联系爬虫与生活,下面介绍一个定向爬虫实例–淘宝商品信息比价定向爬虫。
通过本实例的python代码实现,我们可以通过所想查找的的商品名称相关需求,来获得淘宝商品信息的汇总显示,从而方便我们的购物。另外,我们还可以增加更多功能或内容,如增加发货地,购买数量或是按价格或热度进行排序等等,所以,我们要继续学习去完善它。

二.前期准备:

1.如何绕过防爬虫

(1)现在由于许多无限制的爬虫引起的许多问题,许多网站禁止爬虫或增加了不少的反爬虫措施,淘宝网站也是这样。一般地用requests库进行爬取访问时,我们所得到的网页可能是淘宝账号登入页面或警告爬虫访问的提示网页,那么我们如何从学习爬取技能的实现角度去爬取该网站(千万不要不加限制和高频率的爬取,造成服务器的困扰),下面一一解释。
(2)首先要有能登入淘宝的账号,账号登入淘宝网后,按F12或检查网页,会出现以下画面,然后点击最顶的Network的标签栏,按F5刷新以下,在左侧name栏下的第一个有search的一行点击右键,依次点击Copy->copy as cURL(bash),然后打开该网站https://curl.trillworks.com/(比较方便的转换网站),复制到左边边框,按回车或自动转换,然后复制右边边框内所要复制的信息(headers,params等),将转换后的headers,params放入代码中,替换requests相应的headers,params。步骤见下图:




2.一些常见的问题及处理方法:

在Python字符串里嵌入双引号或者单引号
超详细总结:python的转义字符及用法
PYTHON爬虫神站

三.爬虫实例结构分析:

1.主体结构:

(1)提交商品搜索请求,循环获取页面;
(2)对于每个页面,提取商品名称和价格信息
(3)将信息输出到屏幕上
(4)主函数部分(含搜索名称,页面数目)

2.分析:

(1)爬虫可行性:

淘宝链接:https://www.taobao.com/
爬虫协议链接:https://www.taobao.com/robots.txt

User-agent: Baiduspider
Disallow: /
User-agent: baiduspider
Disallow: /

很遗憾,我们不能爬取该网站,但是还可以低频率地去爬取(关注技术手段的实现)。

(2)网站数据结构

由于不同类型的网站的数据结构不同,所以我们爬取时,首先先分析该网站的数据网络结构,打开淘宝,搜索书包,依次点击:右键-> 查看网页源代码->Crtl F查找->搜索任意商品的名称和价格->定位显示。经过分析可以发现,我们要爬取的商品名称和价格在网页是如下图显示的:



经过分析可知,商品价格是以"view_price":对应的键值对对应的键值,商品名称是以"raw_title":对应的键值对对应的键值,那么我们可以构造对应的正则表达式。

四.爬虫实例展示:

1.爬虫实例代码:

import requests
import re
#由于直接用re库findall函数直接匹配,所以直接跳过网页解析,故不用BeautifulSoup库
def getH(url):#爬取淘宝网页功能模块try:#由于淘宝的防爬虫,所以将request对象中相应替换为以下headers,paramsheaders = {'authority': 'www.taobao.com','cache-control': 'max-age=0','upgrade-insecure-requests': '1','user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400','accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8','referer': 'https://s.taobao.com/search?initiative_id=tbindexz_20170306&ie=utf8&spm=a21bo.21814703.201856-taobao-item.2&sourceId=tb.index&search_type=item&ssid=s5-e&commend=all&imgfile=&q=%E4%B9%A6%E5%8C%85&suggest=history_1&_input_charset=utf-8&wq=shu&suggest_query=shu&source=suggest','accept-encoding': 'gzip, deflate, br','accept-language': 'zh-CN,zh;q=0.9','cookie': 'cna=ykA8F8wwIhQCAXjnD2rV02VA; thw=cn; miid=139266461975127532; tg=0; tracknick=tb974603328; enc=9rD7NaiAOUBdZvdWQJKIu%2FGUAgOAk65Nba4MYm69MZXo7Ray9ygdQKPd2XuvRQVGqR7GH0gTbvJ7m8%2FsZtqtPw%3D%3D; hng=CN%7Czh-CN%7CCNY%7C156; xlly_s=1; t=122c996eaa771df2b9c5212871285f7f; lgc=tb974603328; mt=ci=16_1; sgcookie=E100jPR1J1pPkevdV2ZFyz%2FwUfWmW459FG7Szveibx30jPnr6QhkbdUtUo1RYJxZsUoZTFEjH8DwOvGNeU%2FeZsoRBA%3D%3D; uc3=id2=UNXzhB78YNdetg%3D%3D&nk2=F5RMHl6xd4zYCPg%3D&vt3=F8dCuwlBgA1irZ%2FnGlc%3D&lg2=WqG3DMC9VAQiUQ%3D%3D; uc4=nk4=0%40FY4HWyt7MS8T1L4kAACP7268%2F0kspA%3D%3D&id4=0%40UgJ2Y4N%2FZKxvkyJHZOxSebXBePGq; _cc_=UIHiLt3xSw%3D%3D; _m_h5_tk=37da3632b58750c3203d7d8e4cf1695d_1620038583219; _m_h5_tk_enc=d2e8836b07c7990128a398c9946d84d5; cookie2=1aa0712425dc9a6ee1b357eb62a1006b; _tb_token_=fee336363e833; _samesite_flag_=true; uc1=cookie14=Uoe2zXos9oCAhQ%3D%3D; isg=BFtbaBbCv23kbP0jbwSMGjbr_7_FMG8yu7vjuE2YK9pxLHsO1QLTgqauxoyiC8cq; tfstk=cbVPB3OR-_CzDWcCBbGeP4vIsRURwphn6nuIE-PzBybbd4f0ZH3XhxMqCaTSE; l=eBadA9elQG1Z3WlzBOfanurza77OSLAYYuPzaNbMiOCP_21B5_aRW61nuTY6C3GVh6mBR3S3Hn4XBeYBqQAonxvtIosM_Ckmn','if-none-match': 'W/"1ad3f-vhpNj3xbY9jPgO6OC6hl7aXIaHE"',}params = (('spm', 'a230r.1.1581860521.1.644e68b8B8D5oo'),)r = requests.get(url, headers=headers, params=params)r.raise_for_status()r.encoding=r.apparent_encodingreturn r.textexcept:return ""def parseH(ils, html): #将爬取内容转化为相应的数据结构的功能模块try:p = re.findall(r'"view_price":"[\d.]*"', html)#re库的r.text表示方式t = re.findall(r'"raw_title":".*?"', html)for i in range(len(p)):price = eval(p[i].split(':')[1])title = eval(t[i].split(':')[1])ils.append([price, title])except:print("")def printH(ils):temp = "{0:^6}\t{1:^8}\t{2:{3}^16}"#模板print(temp.format("序号", "价格", "商品名称",chr(12288)))count = 0for l in ils:count = count + 1print(temp.format(count, l[0], l[1],chr(12288)))def main():sth=input("请输入要查找的商品名称:")pages=int(input("请输入要爬取的页面数:"))#不建议爬取页面过多,以免造成页面崩溃aurl = 'https://s.taobao.com/search?q=' + sthinlist = []for i in range(pages):#对爬取每一页遍历,然后对每一页进行单一处理try:url = aurl + '&s=' + str(44 * i) #以爬取的每一页的URL进行访问爬取html = getH(url)parseH(inlist, html)except:continueprintH(inlist)
main()

2.运行效果图:



文中如有不足,欢迎指正,谢谢!

网络定向爬虫实例---淘宝商品信息比价相关推荐

  1. 中国大学排名定向爬虫以及淘宝商品爬虫参考嵩天老师Python爬虫课程遇到的问题及解决

    首先附上课程中程序,无法正常运行 把2016年的url更改为今年的url:http://www.shanghairanking.cn/rankings/bcur/2020 代码如下: import r ...

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

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

  3. Python 爬虫知识点 - 淘宝商品检索结果抓包分析(续一)

    通过前一节得出地址可能的构建规律,如下: https://s.taobao.com/search?data-key=s&data-value=44&ajax=true&_ksT ...

  4. [笔记]python爬虫:淘宝商品价格信息爬取示例

    爬取的网站信息 网站地址 淘宝官网:https://www.taobao.com/ 爬取内容 碧根果价格信息 网页对应的部分源代码 从网页源代码中可以看到,需要爬取的商品以 "raw_tit ...

  5. 网络爬虫实战||淘宝、股票定向爬虫

    正则表达式的概念 regular expression           regex          RE 正则表达式是用来简洁表达一组字符串的表达式. 正则表达式的优势:简洁 正则表达式的语法 ...

  6. Python爬虫入门实例五之淘宝商品信息定向爬取(优化版)

    文章目录 写在前面 一.爬取原页面 二.编程思路 1.功能描述 2.程序的结构设计 三.编程过程 1.解决翻页问题 2.编写getHTMLText()函数 3.编写parsePage()函数 (1). ...

  7. 中国大学MOOC“淘宝商品信息定向爬虫”实例(2022版)

    目标: 获取淘宝搜索页面的信息 提取其中的商品名称和价格 (一)程序的结构设计: 1:提交商品搜索请求,循环获取页面 2:对于每个页面,提取商品名称和价格信息 3:将信息输出到屏幕上 (二)代码实现: ...

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

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

  9. [Python3网络爬虫开发实战] 7-动态渲染页面爬取-4-使用Selenium爬取淘宝商品

    在前一章中,我们已经成功尝试分析Ajax来抓取相关数据,但是并不是所有页面都可以通过分析Ajax来完成抓取.比如,淘宝,它的整个页面数据确实也是通过Ajax获取的,但是这些Ajax接口参数比较复杂,可 ...

最新文章

  1. 北大韦神透露现状:自己课讲得不太好,中期学生退课后就剩下5、6个人
  2. OCS 企业版图解详细部署
  3. python编程培训多少钱-python编程培训多少钱?[python培训]
  4. selenium 验证码——万能码的使用
  5. 检测范围_论文检测系统的检测范围有哪些
  6. jQuery实现的向下推送图文信息滚动效果
  7. 【NOIP2002】【codevs1010】过河卒
  8. 拉格朗日乘子法(编辑中)
  9. mysql批量删除指定前缀的表,批量修改表名的SQL语句
  10. 7- 代码段权限检查与 jmp
  11. 工程流体力学笔记暂记42 (收缩喷管中的流动)
  12. 基于Java Web技术的动车购票系统
  13. 【每日蓝桥】2、一三年省赛Java组真题“组素数”
  14. 支付宝小程序使用MQTT over WebSocket连接阿里云IoT物联网平台
  15. 前端安全(http)
  16. 2019计算机三级网络技术答案,2019年计算机三级网络技术精选练习题
  17. python如何分析高频词_python数据分析高频词提取,pyecharts词云制作并保存
  18. markdown文件的常用编写语法(图文并茂)
  19. 商业模式(三):P2P网贷平台,毛利润测算
  20. 测试面试题集锦(四)| Linux 与 Python 编程篇(附答案)

热门文章

  1. Web测试 基础知识框架
  2. 使用Bochs调试操作系统代码
  3. vbs获取计算机信息,vbs获取系统硬件信息小脚本
  4. android ril.java_Android-RIL流程分析
  5. UltraEdit使用技巧小结
  6. 【ElasticSearch系列连载】3. 如何安装符合生产环境要求的ES集群
  7. 安装Linux =gt; ubuntu文档
  8. PAT乙级 1018 锤子剪刀布 (JAVA)
  9. Ubuntu Linux内核版本升级或降级到指定版本(基于ubuntu 18.04示例)
  10. loader是什么?