日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

淘宝商品信息爬取

發(fā)布時間:2023/12/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 淘宝商品信息爬取 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這兩天做的python課設有一個關于python爬蟲的題目,要求是從某寶爬取,那今天就來個某寶的商品信息爬取的內(nèi)容吧!

  • 首先確定個目標,根據(jù)某關鍵詞搜索,從獲取的頁面信息中提取商品標題、價格、發(fā)貨地點、付款人數(shù)、以及點名這些信息,這些信息都是直接在網(wǎng)頁源代碼中。
  • ok,目標定好了,就直接瞄準進攻吧!在淘寶中隨便輸入一個關鍵詞,看一下url,順便來個翻頁,查看一下url的變化,為了方便查看不同頁碼的url的不同,就把他們放一起了,依次是1,2,3,4
  • https://s.taobao.com/search?q=%E7%BE%BD%E7%BB%92%E6%9C%8D&imgfile=&js=1&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20201220&ie=utf8,
    https://s.taobao.com/search?q=%E7%BE%BD%E7%BB%92%E6%9C%8D&imgfile=&js=1&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20201220&ie=utf8&bcoffset=3&ntoffset=3&p4ppushleft=1%2C48&s=44,
    https://s.taobao.com/search?q=%E7%BE%BD%E7%BB%92%E6%9C%8D&imgfile=&js=1&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20201220&ie=utf8&bcoffset=0&ntoffset=6&p4ppushleft=1%2C48&s=88
  • 這么長,這么多,看不懂,怎么辦,莫慌!那就把url解碼工具來幫忙吧!http://tool.chinaz.com/tools/urlencode.aspx,然后把我們的url復制進去,然后你就會發(fā)現(xiàn),oh,q=跟的是一個關鍵字的編碼后的結果。那還有一串是啥啊?嗯,把三個url中重復的刪掉!別問我怎么知道的,既然一樣,那就是可有可無的了,可有可無的=沒用的!刪去的這一部分就不管他了,然后那兩個帶offset的,那個偏移量,一般給他刪了也沒啥問題,然后你就會發(fā)現(xiàn),最后只剩下s了,第一頁沒有,默認0,第二頁44,第三頁88,那這個s就是跟翻頁有關了,s = 44 * (頁數(shù) - 1)
  • OK,那我們就可以先構造url了,先把頭頭拿過來https://s.taobao.com/search?+q=編碼后的字符+&s=(頁碼 - 1) x 44,url編碼可以用urllib.parse.quote(‘字符’)就行了,先整個20頁。
key = '手套'key = parse.quote(key)url = 'https://s.taobao.com/search?q={}&s={}'page = 20for i in range(page):url_page = url.format(key, i * 44)print(url_page)

然后當我們按照正常步驟構造headers請求頭,用get()方法獲取的時候,你會發(fā)現(xiàn),呦吼,炸了,不行,返回的內(nèi)容不對,唉,那該咋整啊,作業(yè)咋辦啊,面向csdn編程不是隨便說說的,然后我就知道了,用爬蟲爬淘寶,需要“假登錄”,獲取頭部headers信息,我們只弄個ua是肯定不行的,然后把弄好的headers作為參數(shù)傳給qequests.get(url,headers = header)就行了,那該咋弄這個headers啊,右鍵,打開瀏覽器抓包工具,然后network,ctrl+r刷新一波,在all里面找到search?開頭的,對他進行右鍵,copy as curl(bash),然后打開https://curl.trillworks.com/,然后粘貼,右邊Python requests里直接復制headers,再請求就完事了!

  • 網(wǎng)頁源碼請求到了,該提取信息了,由于內(nèi)容在script中,所以,re !
    然后我就貼心的把正則表達式貼過來了(小聲比比,這是我拿老師寫的改的)
title = re.findall(r'\"raw_title\"\:\"(.*?)\"', response)nick = re.findall(r'\"nick\"\:\"(.*?)\"', response)item_loc = re.findall(r'\"item_loc\"\:\"(.*?)\"', response)price = re.findall(r'\"view_price\"\:\"(.*?)\"', response)sales = re.findall(r'\"view_sales\"\:\"(.*?)\"', response)

正則表達式匹配得到的內(nèi)容是一個列表,

  • title是標題
  • nick是店鋪(這個多了一個哦,然后我看了看,最后一個沒用,就切片把最后一個丟了就行)
  • item_loc是地區(qū)
  • price是價格
  • sales是付款人數(shù)
    咳咳,然后再來一波對應儲存就行了,這邊推薦您使用csv呢,親!
    寫在最后!!!, 大家不要直接copy代碼,最起碼curl轉(zhuǎn)換的那個請求頭得換了!不換的話沒辦法運行完全的!并且兩次請求中間的間隔盡量長一點,我設置的3s, 同時如果在寫入文件的時候有indexerror錯誤,可以嘗試登錄后復制curl來獲取請求頭!!!!大家一定不要直接復制哈!!!!!
    附上源碼
from urllib import parse from fake_useragent import UserAgent import requests import re import time import csv import osdef get_response(url):ua = UserAgent()headers = {'authority': 's.taobao.com','cache-control': 'max-age=0','upgrade-insecure-requests': '1','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36','accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9','sec-fetch-site': 'same-origin','sec-fetch-mode': 'navigate','sec-fetch-user': '?1','sec-fetch-dest': 'document','accept-language': 'zh-CN,zh;q=0.9','cookie': 'cna=jKMMGOupxlMCAWpbGwO3zyh4; tracknick=tb311115932; _cc_=URm48syIZQ%3D%3D; thw=cn; hng=CN%7Czh-CN%7CCNY%7C156; miid=935759921262504718; t=bd88fe30e6685a4312aa896a54838a7e; sgcookie=E100kQv1bRHxrwnulL8HT5z2wacaf40qkSLYMR8tOCmVIjE%2FxrR5nzhju3UySug2dFrigMAy3v%2FjkNElYj%2BDcqmgdA%3D%3D; uc3=nk2=F5RGNwnC%2FkUVLHU%3D&vt3=F8dCuf2OXoGHiuEl2D8%3D&id2=VyyUy7sStBYaoA%3D%3D&lg2=U%2BGCWk%2F75gdr5Q%3D%3D; lgc=tb311115932; uc4=nk4=0%40FY4NAq0PgYBeuIHFyHE%2F9QSZnG6juw%3D%3D&id4=0%40VXtbYhfspVba1o0MN1OuNaxcY%2BUP; enc=tJQ9f26IYMQmwsNzfEZi6fJNcflLvL6bdcU4yyus3rqfsM37Mpy1jvcSMZ%2BYSaE5vziMtC9svi%2B4JVMfCnIsWA%3D%3D; _samesite_flag_=true; cookie2=112f2a76112f88f183403c6a3c4b721f; _tb_token_=eeeb18eb59e1; tk_trace=oTRxOWSBNwn9dPyorMJE%2FoPdY8zfvmw%2Fq5v3iwJfzrr80CDMiLUbZX4jcwHeizGatsFqHolN1SmeHD692%2BvAq7YJ%2FbITqs68WMjdAhcxP7WLdArSe8thnE40E0eWE4GQTvQP9j5XSLFbjZAE7XgwagUcgW%2Fg6rXAuZaws1NrrZksnq%2BsYQUb%2FHT%2Fa1m%2Fctub0jBbjlmp8ZDJGSpGyPMgg561G3vjIRPVnkhRCyG9GgwteJUZAsyQIkeh7xtdyN%2BF50TIambWylXMZhQW7LQGZ48rHl3Q; lLtC1_=1; v=0; mt=ci=-1_0; _m_h5_tk=b0940eb947e1d7b861c7715aa847bfc7_1608386181566; _m_h5_tk_enc=6a732872976b4415231b3a5270e90d9c; xlly_s=1; alitrackid=www.taobao.com; lastalitrackid=www.taobao.com; JSESSIONID=136875559FEC7BCA3591450E7EE11104; uc1=cookie14=Uoe0ZebpXxPftA%3D%3D; tfstk=cgSFBiAIAkEUdZx7kHtrPz1rd-xdZBAkGcJ2-atXaR-zGpLhi7lJIRGJQLRYjef..; l=eBI8YSBIOXAWZRYCBOfaourza779sIRYSuPzaNbMiOCP9_fp5rvCWZJUVfT9CnGVh6SBR3-wPvUJBeYBqnY4n5U62j-la_Dmn; isg=BAsLX3b80AwyYAwAj8PO7RC0mq_1oB8iDqsYtX0I5sqhnCv-BXFHcGI-cpxyuXca',}response = requests.get(url, headers=headers).content.decode('utf-8')# "raw_title":"卡蒙手套女2020秋冬季新款運動保暖護手休閑針織觸屏防寒羊皮手套"# "view_price":"208.00"# "nick":"intersport旗艦店"# "item_loc":"江蘇 連云港"# "view_sales":"0人付款"title = re.findall(r'\"raw_title\"\:\"(.*?)\"', response)nick = re.findall(r'\"nick\"\:\"(.*?)\"', response)[:-1]item_loc = re.findall(r'\"item_loc\"\:\"(.*?)\"', response)price = re.findall(r'\"view_price\"\:\"(.*?)\"', response)sales = re.findall(r'\"view_sales\"\:\"(.*?)\"', response)return [title, nick, item_loc, price, sales]def tocsv(file, filename):with open(filename, 'a+', encoding='utf-8') as f:f.seek(0)write = csv.writer(f)if f.read() == '':write.writerow(('標題', '店鋪', '地點', '價格', '付款人數(shù)'))for i in range(len(file[0])):write.writerow((file[0][i], file[1][i], file[2][i], file[3][i], file[4][i]))if __name__ == '__main__':filename = 'taobao.csv'key = '手套'key = parse.quote(key)url = 'https://s.taobao.com/search?q={}&s={}'page = 20if os.path.exists('taobao.csv'):os.remove('taobao.csv')for i in range(page):url_page = url.format(key, i * 44)print(url_page)res = get_response(url_page)time.sleep(1)tocsv(res, filename=filename)

可是因為爬取次數(shù)太多,淘寶不給我爬了,然后我就想用selenium試試吧,結果登錄過了,還是不能過驗證碼那一關

然后,他就這樣了!

這樣的話就只能嘗試購買代理IP或者用技術破解滑塊了,代理好貴,滑塊好難

親測用免費的代理池不得行,哭遼
咳,最近進展,我發(fā)現(xiàn)過了兩天他又能用了,應該只是暫時的限制,問題不大,當出現(xiàn)驗證碼攔截的時候等幾天就行了

總結

以上是生活随笔為你收集整理的淘宝商品信息爬取的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。