我们在网购的时候经常会使用一些网络平台,淘宝是一个重要的平台.
我们买东西都需要在淘宝上进行一些搜索.
功能描述
目标:获取淘宝搜索页面的信息,提取其中的商品名称和价格
理解:淘宝的搜索接口,怎么通过程序向淘宝提交请求并获得返回的结果
翻页的处理
技术路线:requests‐bs4‐re
例如,搜索“书包”
起始页:/search?q=书包&js=1&stats_click=search_radio_all%
3A1&initiative_id=staobaoz_0105&ie=utf8
第2页:/search?q=书包&js=1&stats_click=search_radio_all%
3A1&initiative_id=staobaoz_0105&ie=utf8&bcoffset=0&ntoffset=0&p4pp
ushleft=1%2C48&s=44
第3页:/search?q=书包&js=1&stats_click=search_radio_all%
3A1&initiative_id=staobaoz_0105&ie=utf8&bcoffset=‐3&ntoffset=‐
3&p4ppushleft=1%2C48&s=88
每页44个商品
通过对例子的分析,我们得到了搜索接口和翻页的URL对应属性
定向爬虫的可行性
/robots.txt
User‐agent:*
Disallow:/
所以淘宝的搜索页面是不允许爬虫对它进行爬取的
请注意:这个例子仅探讨技术实现,请不要不加限制的爬取该网站
程序的结构设计
步骤1:提交商品搜索请求,循环获取页面
步骤2:对于每个页面,提取商品名称和价格信息
步骤3:将信息输出到屏幕上
实例编写
import requestsimport redef 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])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 = 'Python'depth = 3start_url = '/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()
序号 价格商品名称
1 34.60 零基础入门学习Python入门教程小甲鱼著
2 34.60 零基础入门学习Python 小甲鱼计算机/网络 程序设计 零基础学编程 python基础学习手册 pyhton从入门到精通Python程序设计教程书籍
3 69.80 现货Python编程从入门到实践python3.0绝技核心编程基础教程网络爬虫入门书籍python视频编程从入门到精通程序设计教材
4 346.00 【正版@区域包邮】数据科学与工程技术丛书 套装(共5册)高级R语言编程指南+数据科学导论:Python语言实现+数据质量测量的持续改
5 61.70 【包邮计算机】Python可以这样学//正版图书
6 57.30 Maya Python游戏与影视编程指南 音频、视频、流媒体书籍 畅销书
7 52.80 python编程入门教程 教孩子编程的图书 父与子的编程之旅 与小卡特一起学Python Python语言基础入门书 计算机程序设计核心编程
8 61.70 【包邮计算机】Python数据可视化//正版图书
9 45.90 包邮 Python网络数据采集 python语言网络数据采集教程书籍 python编程基础入门教程 网络爬虫测试网站教程 程序设计教材
10 37.50 【正版包邮Z】贝叶斯思维 统计建模的Python学习法Allen B.Downey,许杨毅计算机/网络 程序设计 其他畅销书籍人民邮电出版社博
11 85.14 【包邮计算机】Python金融大数据分析//正版图书
总结
采用requests‐re路线实现了淘宝商品比价定向爬虫
熟练掌握正则表达式在信息提取方面的应用