Python网络爬虫与信息提取-Day13-(实例)淘宝商品比价定向爬虫

我们在网购的时候经常会使用一些网络平台,淘宝是一个重要的平台.

我们买东西都需要在淘宝上进行一些搜索.

功能描述

目标:获取淘宝搜索页面的信息,提取其中的商品名称和价格

理解:淘宝的搜索接口,怎么通过程序向淘宝提交请求并获得返回的结果

翻页的处理

技术路线:requestsbs4re

 

例如,搜索“书包”

起始页:https://s.taobao.com/search?q=书包&js=1&stats_click=search_radio_all%

3A1&initiative_id=staobaoz_20170105&ie=utf8

2页:https://s.taobao.com/search?q=书包&js=1&stats_click=search_radio_all%

3A1&initiative_id=staobaoz_20170105&ie=utf8&bcoffset=0&ntoffset=0&p4pp

ushleft=1%2C48&s=44

3页:https://s.taobao.com/search?q=书包&js=1&stats_click=search_radio_all%

3A1&initiative_id=staobaoz_20170105&ie=utf8&bcoffset=3&ntoffset=

3&p4ppushleft=1%2C48&s=88

每页44个商品

通过对例子的分析,我们得到了搜索接口和翻页的URL对应属性

 

定向爬虫的可行性

https://s.taobao.com/robots.txt

Useragent: *

Disallow: /

所以淘宝的搜索页面是不允许爬虫对它进行爬取的

请注意:这个例子仅探讨技术实现,请不要不加限制的爬取该网站

 

程序的结构设计

步骤1:提交商品搜索请求,循环获取页面

步骤2:对于每个页面,提取商品名称和价格信息

步骤3:将信息输出到屏幕上

 

实例编写

import requests
import re

def getHTMLText(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        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 = 0
    for g in ilt:
        count = count + 1
        print(tplt.format(count, g[0], g[1]))
        
def main():
    goods = 'Python'
    depth = 3
    start_url = 'https://s.taobao.com/search?q=' + goods
    infoList = []
    for i in range(depth):
        try:
            url = start_url + '&s=' + str(44*i)
            html = getHTMLText(url)
            parsePage(infoList, html)
        except:
            continue
    printGoodsList(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金融大数据分析//正版图书

 

总结

采用requestsre路线实现了淘宝商品比价定向爬虫

熟练掌握正则表达式在信息提取方面的应用

你可能感兴趣的:(python,网络爬虫)