Python淘宝商品比价定向爬虫,这个外包值五百吗?

1.项目基本信息

目标: 获取淘宝搜索页面的信息,提取其中的商品名称和价格
理解: 淘宝的搜索接口、翻页的处理
URL样式:

Python淘宝商品比价定向爬虫,这个外包值五百吗?

2.程序的结构设计

步骤1:提交商品搜索请求,循环获取页面
步骤2:对于每个页面,提取商品名称和价格信息
步骤3:将信息输出到屏幕上

3.Cookie内容的获取

由于淘宝的反爬机制,需要修改请求头,添加Cookie信息

Python淘宝商品比价定向爬虫,这个外包值五百吗?

Python淘宝商品比价定向爬虫,这个外包值五百吗?

运行结果:

Python淘宝商品比价定向爬虫,这个外包值五百吗?

4.代码

import requests
import re

def getHTMLText(url):
    try:
        # \连接多行
        cookie_content = "miid=892389301891538214;cna=hnaTFWsdyW0CAXOXQdBBG5tX;\
                  isg=BLq60XalsXGNxj9VtCMK9zU6CODcaz5FjG8jisSzZs0Yt1rxrPuOVYDFA8NrPLbd;\
                  l=eBMzSVePqmS6XnjtBOfahurza77OSIOYYuPzaNbMiOCP_yfB5sONWZP-fYL6C31Vh6XJR3PXGizJBeYBqQAonxv92j-la_kmn;\
                  thw=cn; tfstk=cQdhB7bxgpWBz-kNMX1Blg1Sq2lAwNUFAtBw_CbpYp-U951mnRyVFGqCbAbYF;\
                  hng=CN%7Czh-CN%7CCNY%7C156; sgcookie=E4hGC1l%2FtzyLC76w2ysFN;\
                  tracknick=1234%5Cu75AF83386591;\
                  _cc_=WqG3DMC9EA%3D%3D;\
                  enc=ZXXKNl9itH049IdhJK2eMYLeK8%2FfcD3I1SIxwNzqIUCy8gm3lVnGIklgip9oskesaOCKOk1XtRfY96Hi%2F%2FhdKw%3D%3D;\
                  JSESSIONID=7B337485B801F235F7A9BE3504D975E1"
        kv = {'cookie':cookie_content,'User-agent':'Mozilla/5.0'}
        r = requests.get(url, timeout = 30, headers = kv)
        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{:20}"
    print(tplt.format("序号", "价格", "商品名称"))
    count = 0
    for g in ilt:
        count = count + 1
        print(tplt.format(count, g[0], g[1]))
         
def main():
    goods = '书包'
    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.项目基本信息
目标: 获取淘宝搜索页面的信息,提取其中的商品名称和价格
理解: 淘宝的搜索接口、翻页的处理
URL样式:
在这里插入图片描述

2.程序的结构设计
步骤1:提交商品搜索请求,循环获取页面
步骤2:对于每个页面,提取商品名称和价格信息
步骤3:将信息输出到屏幕上

3.Cookie内容的获取
由于淘宝的反爬机制,需要修改请求头,添加Cookie信息
在这里插入图片描述在这里插入图片描述

运行结果:
在这里插入图片描述

4.代码
import requests
import re

def getHTMLText(url):
    try:
        # \连接多行
        cookie_content = "miid=892389301891538214;cna=hnaTFWsdyW0CAXOXQdBBG5tX;\
                  isg=BLq60XalsXGNxj9VtCMK9zU6CODcaz5FjG8jisSzZs0Yt1rxrPuOVYDFA8NrPLbd;\
                  l=eBMzSVePqmS6XnjtBOfahurza77OSIOYYuPzaNbMiOCP_yfB5sONWZP-fYL6C31Vh6XJR3PXGizJBeYBqQAonxv92j-la_kmn;\
                  thw=cn; tfstk=cQdhB7bxgpWBz-kNMX1Blg1Sq2lAwNUFAtBw_CbpYp-U951mnRyVFGqCbAbYF;\
                  hng=CN%7Czh-CN%7CCNY%7C156; sgcookie=E4hGC1l%2FtzyLC76w2ysFN;\
                  tracknick=1234%5Cu75AF83386591;\
                  _cc_=WqG3DMC9EA%3D%3D;\
                  enc=ZXXKNl9itH049IdhJK2eMYLeK8%2FfcD3I1SIxwNzqIUCy8gm3lVnGIklgip9oskesaOCKOk1XtRfY96Hi%2F%2FhdKw%3D%3D;\
                  JSESSIONID=7B337485B801F235F7A9BE3504D975E1"
        kv = {'cookie':cookie_content,'User-agent':'Mozilla/5.0'}
        r = requests.get(url, timeout = 30, headers = kv)
        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{:20}"
    print(tplt.format("序号", "价格", "商品名称"))
    count = 0
    for g in ilt:
        count = count + 1
        print(tplt.format(count, g[0], g[1]))
         
def main():
    goods = '书包'
    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()

你学会了吗?****可加群哦:1136192749