簡單說下做天貓爬蟲的思路


1、需要用代理

搞個代理ip池動態切換,預防被反爬蟲機制斃掉ip

獲取代理ip的方式很多,我主要通過爬

http://www.xicidaili.com/nn/網站,抓取ip后一個個檢查是否有效,然后記錄在本地文本,使用時讀取文本這種方法方法有點笨,不過寫起來簡單

注意天貓要用HTTPS代理,不是HTTP代理

2、需要使用cookie

最簡單的辦法就是手工登錄,登錄時抓包,復制黏貼cookie出來放到代碼里,但這種cookie有使用限制

最有效的辦法就是用selenium模擬人工登錄,然后抓包,復制黏貼cookie

還有種有效辦法是用typescript的mocha框架寫一套前端訪問腳本,抓取cookie存到本地

抓到的cookie是字符串形式的,要切換成字典形式

3、拼接搜索關鍵詞

搜索關鍵詞要轉換成gb2312格式,然后再進行urlencode編碼

用python來舉例

# 拼接檢索關鍵詞
def make_search_words():
    words = ['奶粉', '嬰兒']
    results = []
    for word in words:
        word = word.decode('utf8').encode('gb2312')
        results.append(urllib2.quote(word))
    return '+'.join(results)

4、拼接URL

如代碼所示,q是關鍵詞,sort是搜索方式,比如按銷量就是d,s是展示的商品數目

第一頁s是0,每頁60件,所以每頁往上遞增60

url = 'https://list.tmall.com/search_product.htm?q={}&sort={}&s={}'.format(make_search_words(),
                                                                               'd', product_num)
    print url
    r = requests.get(url, headers=headers, verify=False, cookies=cookie, proxies=proxies)
    if '親,小二正忙,滑動一下馬上回來' in r.text.encode('utf8'):
        print '執行失敗,請檢查代理或cookie'
        sys.exit(1)
    with open(save_file, 'w') as f:
        f.write(r.text.encode('utf8'))

請求輸入過多被反爬,或者cookie錯誤被屏蔽時會出現“親,小二正忙,滑動一下馬上回來”,所以用它來檢驗是否爬到了正確的頁面

5、解析數據

以前我習慣用bs4,聽說lxml是效率最高的,就用lxml吧

from lxml import etree
    with open(save_file, 'r') as f:
        text = f.readlines()
    text = ''.join(text).decode('utf8')
    html_obj = etree.HTML(text)

    product_names = deque([])
    for a in html_obj.xpath("//a[@target='_blank']"):

  6、保存數據到sqllite數據庫或mysql數據庫

不展示全部代碼了,只提供思路,歡迎探討

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM