网络爬虫:商品比价定向爬虫
商品比價定向爬蟲
Copyright: Jingmin Wei, Pattern Recognition and Intelligent System, School of Artificial and Intelligence, Huazhong University of Science and Technology
網(wǎng)絡(luò)爬蟲專欄鏈接
文章目錄
- 商品比價定向爬蟲
- Reference
- 功能描述
- 定向爬蟲可行性
- 程序的結(jié)構(gòu)設(shè)計
- 程序編寫
- 源代碼
- 輸出結(jié)果(部分)
- 總結(jié)
本教程主要參考中國大學(xué)慕課的 Python 網(wǎng)絡(luò)爬蟲與信息提取,為個人學(xué)習(xí)筆記。
在學(xué)習(xí)過程中遇到了一些問題,都手動記錄并且修改更正,保證所有的代碼為有效。且結(jié)合其他的博客總結(jié)了一些常見問題的解決方式。
本教程不商用,僅為學(xué)習(xí)參考使用。如需轉(zhuǎn)載,請聯(lián)系本人。
Reference
爬蟲 MOOC
數(shù)據(jù)分析 MOOC
廖雪峰老師的 Python 教程
功能描述
目標(biāo):獲取某平臺搜索頁面的信息,提取其中的商品名稱和價格。
理解:
-
某平臺的搜索接口
-
翻頁的處理
搜索接口和翻頁的URL對應(yīng)屬性:
“書包”
定向爬蟲可行性
我們是類人行為,本實例僅探討技術(shù)實現(xiàn),即是以人類行為訪問網(wǎng)站。
請注意,不要不加限制地爬取。
程序的結(jié)構(gòu)設(shè)計
步驟1:提交商品搜索請求,循環(huán)獲取頁面
步驟2:對于每個頁面,提取商品名稱和價格信息
步驟3:將信息輸出到屏幕上
程序編寫
價格:
名字:
只需將 view_price 和 raw_title 從眾多信息中提取出來即可
源代碼
# -*- coding:utf-8 -*-import requests import re#需要修改requests.get()方法中控制訪問的參數(shù)headers,解決網(wǎng)站的反爬問題 headers = {'cookie':'thw=cn; v=0; t=ab66dffdedcb481f77fd563809639584; cookie2=1f14e41c704ef58f8b66ff509d0d122e; _tb_token_=5e6bed8635536; cna=fGOnFZvieDECAXWIVi96eKju; unb=1864721683; sg=%E4%B8%8B3f; _l_g_=Ug%3D%3D; skt=83871ef3b7a49a0f; cookie1=BqeGegkL%2BLUif2jpoUcc6t6Ogy0RFtJuYXR4VHB7W0A%3D; csg=3f233d33; uc3=vt3=F8dBy3%2F50cpZbAursCI%3D&id2=UondEBnuqeCnfA%3D%3D&nk2=u%2F5wdRaOPk21wDx%2F&lg2=VFC%2FuZ9ayeYq2g%3D%3D; existShop=MTU2MjUyMzkyMw%3D%3D; tracknick=%5Cu4E36%5Cu541B%5Cu4E34%5Cu4E3F%5Cu5929%5Cu4E0B; lgc=%5Cu4E36%5Cu541B%5Cu4E34%5Cu4E3F%5Cu5929%5Cu4E0B; _cc_=WqG3DMC9EA%3D%3D; dnk=%5Cu4E36%5Cu541B%5Cu4E34%5Cu4E3F%5Cu5929%5Cu4E0B; _nk_=%5Cu4E36%5Cu541B%5Cu4E34%5Cu4E3F%5Cu5929%5Cu4E0B; cookie17=UondEBnuqeCnfA%3D%3D; tg=0; enc=2GbbFv3joWCJmxVZNFLPuxUUDA7QTpES2D5NF0D6T1EIvSUqKbx15CNrsn7nR9g%2Fz8gPUYbZEI95bhHG8M9pwA%3D%3D; hng=CN%7Czh-CN%7CCNY%7C156; mt=ci=32_1; alitrackid=www.taobao.com; lastalitrackid=www.taobao.com; swfstore=97213; x=e%3D1%26p%3D*%26s%3D0%26c%3D0%26f%3D0%26g%3D0%26t%3D0%26__ll%3D-1%26_ato%3D0; uc1=cookie16=UtASsssmPlP%2Ff1IHDsDaPRu%2BPw%3D%3D&cookie21=UIHiLt3xThH8t7YQouiW&cookie15=URm48syIIVrSKA%3D%3D&existShop=false&pas=0&cookie14=UoTaGqj%2FcX1yKw%3D%3D&tag=8&lng=zh_CN; JSESSIONID=A502D8EDDCE7B58F15F170380A767027; isg=BMnJJFqj8FrUHowu4yKyNXcd2PXjvpa98f4aQWs-RbDvsunEs2bNGLfj8BYE6lWA; l=cBTDZx2mqxnxDRr0BOCanurza77OSIRYYuPzaNbMi_5dd6T114_OkmrjfF96VjWdO2LB4G2npwJ9-etkZ1QoqpJRWkvP.; whl=-1%260%260%261562528831082','user-agent':'Mozilla/5.0'}def getHTMLText(url):try:r = requests.get(url, headers = headers, timeout = 30) #類比當(dāng)時爬亞馬遜的例子r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:return ""def parsePage(ilt, html):try:plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"', html) #匹配價格tlt = re.findall(r'\"raw_title\"\:\".*?\"', html) #匹配名稱。*?表示最小匹配,只取得最后一個"的內(nèi)容for i in range(len(plt)):price = eval(plt[i].split(':')[1]) #eval將最外層單雙引號去掉,split以:作為分隔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 = 0for g in ilt:count = count + 1print(tplt.format(count, g[0], g[1]))def main():goods = '書包'depth = 3 #爬取深度start_url = 'https://s.taobao.com/search?q=' + goodsinfoList = []for i in range(depth):try:url = start_url + '&s=' + str(44*i)html = getHTMLText(url)parsePage(infoList, html)except:continueprintGoodsList(infoList)main()輸出結(jié)果(部分)
總結(jié)
采用 requests‐re 路線實現(xiàn)了某電商平臺商品比價定向爬蟲。
熟練掌握正則表達(dá)式在信息提取方面的應(yīng)用。
總結(jié)
以上是生活随笔為你收集整理的网络爬虫:商品比价定向爬虫的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 思维的广度与深度
- 下一篇: 获取json格式中属性—sql