1. 程式人生 > >爬蟲--淘寶商品資訊定向爬蟲

爬蟲--淘寶商品資訊定向爬蟲

目標:獲取淘寶搜尋頁面的資訊,提取其中的名稱和價格

理解:①淘寶的搜尋介面 ②翻頁的處理

技術路線:requests-re

首先在淘寶介面,搜尋關鍵字“書包”,複製搜尋框上的連結。在淘寶上,同一類商品往往會有很多頁。在這裡我們爬取書包的前兩頁。點選第二頁,在複製搜尋框上的連結。點選第三頁。。。

發現什麼了嗎?就是最後的s,他的數值不同,就代表了不同的頁。

接下來我們考慮怎麼提取網頁我們想要的東西呢?首先通過requests庫獲取網頁,然後通過re庫來進行網頁中我們想要的內容的提取。

接下來就是寫程式碼了。。。(我這裡用的Python3)

程式碼:

import re
import requests
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("1111")
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 = '書包'
    depth = 2
    start_url = 'https://s.taobao.com/search?q='+goods
    infoList = []
    for i in range(depth):
        try:
            if i==0:
                url = start_url
            else:
                url = start_url + '&s=' + str(44*i)
            html = getHTMLText(start_url)
            parsePage(infoList,html)
        except:
            continue
    printGoodsList(infoList)
main()

測試結果:

爬不下來的,可以將那個timeout去掉,再試試。