1. 程式人生 > 實用技巧 >Python淘寶商品比價定向爬蟲

Python淘寶商品比價定向爬蟲

1.專案基本資訊

目標:獲取淘寶搜尋頁面的資訊,提取其中的商品名稱和價格
理解:淘寶的搜尋介面、翻頁的處理

很多人學習python,不知道從何學起。
很多人學習python,掌握了基本語法過後,不知道在哪裡尋找案例上手。
很多已經做案例的人,卻不知道如何去學習更加高深的知識。
那麼針對這三類人,我給大家提供一個好的學習平臺,免費領取視訊教程,電子書籍,以及課程的原始碼!
QQ群:101677771


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()