python爬蟲實戰(zhàn):媽媽再也不擔心我爬取不到淘寶商品信息了

前言

一虫溜、解析淘寶URL組成

二、查看網(wǎng)頁源碼并用re庫提取信息

1.查看源碼

2.re庫提取信息

三:函數(shù)填寫

四:主函數(shù)填寫

五:完整代碼

如果大家在學習中遇到困難退疫,想找一個python學習交流環(huán)境参歹,可以加入我們的python圈,裙號947618024岔霸,可領取python學習資料薛躬,會節(jié)約很多時間,減少很多遇到的難題呆细。

前言

本文簡單使用python的requests庫及re正則表達式對淘寶的商品信息(商品名稱型宝,商品價格,生產(chǎn)地區(qū)絮爷,以及銷售額)進行了爬取趴酣,并最后用xlsxwriter庫將信息放入Excel表格。最后的效果圖如下:

提示:以下是本篇文章正文內(nèi)容

一坑夯、解析淘寶URL組成

1.我們的第一個需求就是要輸入商品名字返回對應的信息

所以我們這里隨便選一個商品來觀察它的URL价卤,這里我們選擇的是書包,打開網(wǎng)頁渊涝,可知他的URL為:

https://s.taobao.com/search?q=%E4%B9%A6%E5%8C%85&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306

可能單單從這個url里我們看不出什么慎璧,但是我們可以從圖中看出一些端倪

我們發(fā)現(xiàn)q后面的參數(shù)就是我們要獲取的物品的名字

2.我們第二個需求就是根據(jù)輸入的數(shù)字來爬取商品的頁碼

所以我們來觀察一下后面幾頁URL的組成

由此我們可以得出分頁的依據(jù)是最后s的值=(44(頁數(shù)-1))

二、查看網(wǎng)頁源碼并用re庫提取信息

1.查看源碼

這里的幾個信息都是我們所需要的

2.re庫提取信息

a = re.findall(r'"raw_title":"(.*?)"', html)? ? b = re.findall(r'"view_price":"(.*?)"', html)? ? c = re.findall(r'"item_loc":"(.*?)"', html)? ? d = re.findall(r'"view_sales":"(.*?)"', html)1234

三:函數(shù)填寫

這里我寫了三個函數(shù)跨释,第一個函數(shù)來獲取html網(wǎng)頁胸私,代碼如下:

defGetHtml(url):r = requests.get(url,headers =headers)? ? r.raise_for_status()? ? r.encoding = r.apparent_encodingreturnr12345

第二個用于獲取網(wǎng)頁的URL代碼如下:

def Geturls(q, x):? ? url ="https://s.taobao.com/search?q="+ q +"&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm"\"=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306 "urls = []? ? urls.append(url)ifx ==1:returnurlsfori inrange(1, x ):? ? ? ? url ="https://s.taobao.com/search?q="+ q +"&commend=all&ssid=s5-e&search_type=item"\"&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306"\"&bcoffset=3&ntoffset=3&p4ppushleft=1%2C48&s="+ str(? ? ? ? ? ? i *44)? ? ? ? urls.append(url)returnurls1234567891011121314

第三個用于獲取我們需要的商品信息并寫入Excel表格代碼如下:

defGetxxintoExcel(html):globalcount#定義一個全局變量count用于后面excel表的填寫a = re.findall(r'"raw_title":"(.*?)"', html)#(.*?)匹配任意字符b = re.findall(r'"view_price":"(.*?)"', html)? ? c = re.findall(r'"item_loc":"(.*?)"', html)? ? d = re.findall(r'"view_sales":"(.*?)"', html)? ? x = []foriinrange(len(a)):try:? ? ? ? ? ? x.append((a[i],b[i],c[i],d[i]))#把獲取的信息放入新的列表中exceptIndexError:breaki =0foriinrange(len(x)):? ? ? ? worksheet.write(count + i +1,0, x[i][0])#worksheet.write方法用于寫入數(shù)據(jù),第一個數(shù)字是行位置,第二個數(shù)字是列鳖谈,第三個是寫入的數(shù)據(jù)信息岁疼。worksheet.write(count + i +1,1, x[i][1])? ? ? ? worksheet.write(count + i +1,2, x[i][2])? ? ? ? worksheet.write(count + i +1,3, x[i][3])? ? count = count +len(x)#下次寫入的行數(shù)是這次的長度+1returnprint("已完成")123456789101112131415161718192021

四:主函數(shù)填寫

if__name__ =="__main__":? ? count =0headers = {"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36","cookie":""#cookie 是每個人獨有的,因為反爬機制的緣故缆娃,爬取太快可能到后面要重新刷新一下自己的Cookie捷绒。? ? ? ? ? ? ? ? }? ? q =input("輸入貨物")? ? x = int(input("你想爬取幾頁"))? ? urls = Geturls(q,x)? ? workbook = xlsxwriter.Workbook(q+".xlsx")? ? worksheet = workbook.add_worksheet()? ? worksheet.set_column('A:A',70)? ? worksheet.set_column('B:B',20)? ? worksheet.set_column('C:C',20)? ? worksheet.set_column('D:D',20)? ? worksheet.write('A1','名稱')? ? worksheet.write('B1','價格')? ? worksheet.write('C1','地區(qū)')? ? worksheet.write('D1','付款人數(shù)')forurlinurls:? ? ? ? html = GetHtml(url)? ? ? ? s = GetxxintoExcel(html.text)time.sleep(5)? ? workbook.close()#在程序結束之前不要打開excel,excel表在當前目錄下12345678910111213141516171819202122232425

五:完整代碼

importreimportrequestsimportxlsxwriterimporttimedefGetxxintoExcel(html):globalcount? ? a = re.findall(r'"raw_title":"(.*?)"', html)? ? b = re.findall(r'"view_price":"(.*?)"', html)? ? c = re.findall(r'"item_loc":"(.*?)"', html)? ? d = re.findall(r'"view_sales":"(.*?)"', html)? ? x = []foriinrange(len(a)):try:? ? ? ? ? ? x.append((a[i],b[i],c[i],d[i]))exceptIndexError:breaki =0foriinrange(len(x)):? ? ? ? worksheet.write(count + i +1,0, x[i][0])? ? ? ? worksheet.write(count + i +1,1, x[i][1])? ? ? ? worksheet.write(count + i +1,2, x[i][2])? ? ? ? worksheet.write(count + i +1,3, x[i][3])? ? count = count +len(x)returnprint("已完成")defGeturls(q, x):url ="https://s.taobao.com/search?q="+ q +"&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm"\"=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306 "urls = []? ? urls.append(url)ifx ==1:returnurlsforiinrange(1, x ):? ? ? ? url ="https://s.taobao.com/search?q="+ q +"&commend=all&ssid=s5-e&search_type=item"\"&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306"\"&bcoffset=3&ntoffset=3&p4ppushleft=1%2C48&s="+ str(? ? ? ? ? ? i *44)? ? ? ? urls.append(url)returnurlsdefGetHtml(url):r = requests.get(url,headers =headers)? ? r.raise_for_status()? ? r.encoding = r.apparent_encodingreturnrif__name__ =="__main__":? ? count =0headers = {"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36","cookie":""}? ? q = input("輸入貨物")? ? x = int(input("你想爬取幾頁"))? ? urls = Geturls(q,x)? ? workbook = xlsxwriter.Workbook(q+".xlsx")? ? worksheet = workbook.add_worksheet()? ? worksheet.set_column('A:A',70)? ? worksheet.set_column('B:B',20)? ? worksheet.set_column('C:C',20)? ? worksheet.set_column('D:D',20)? ? worksheet.write('A1','名稱')? ? worksheet.write('B1','價格')? ? worksheet.write('C1','地區(qū)')? ? worksheet.write('D1','付款人數(shù)')? ? xx = []forurlinurls:? ? ? ? html = GetHtml(url)? ? ? ? s = GetxxintoExcel(html.text)? ? ? ? time.sleep(5)? ? workbook.close()123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475

覺得寫的可以的

最后多說一句贯要,想學習Python可聯(lián)系小編暖侨,

這里有我自己整理的整套python學習資料和路線,

想要這些資料的都可以簡信回復我“資料”即可領取學習3缟W侄骸京郑!

本文章素材來源于網(wǎng)絡,如有侵權請聯(lián)系刪除葫掉。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末些举,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子俭厚,更是在濱河造成了極大的恐慌户魏,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挪挤,死亡現(xiàn)場離奇詭異绪抛,居然都是意外死亡,警方通過查閱死者的電腦和手機电禀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來笤休,“玉大人尖飞,你說我怎么就攤上這事〉暄牛” “怎么了政基?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長闹啦。 經(jīng)常有香客問我沮明,道長,這世上最難降的妖魔是什么窍奋? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任荐健,我火速辦了婚禮,結果婚禮上琳袄,老公的妹妹穿的比我還像新娘江场。我一直安慰自己,他們只是感情好窖逗,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布址否。 她就那樣靜靜地躺著,像睡著了一般碎紊。 火紅的嫁衣襯著肌膚如雪佑附。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天仗考,我揣著相機與錄音音同,去河邊找鬼。 笑死秃嗜,一個胖子當著我的面吹牛瘟斜,可吹牛的內(nèi)容都是我干的缸夹。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼螺句,長吁一口氣:“原來是場噩夢啊……” “哼虽惭!你這毒婦竟也來了?” 一聲冷哼從身側響起蛇尚,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤芽唇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后取劫,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體匆笤,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年谱邪,在試婚紗的時候發(fā)現(xiàn)自己被綠了炮捧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡惦银,死狀恐怖咆课,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情扯俱,我是刑警寧澤书蚪,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站迅栅,受9級特大地震影響殊校,放射性物質發(fā)生泄漏。R本人自食惡果不足惜读存,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一为流、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧让簿,春花似錦艺谆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至居凶,卻和暖如春虫给,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背侠碧。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工抹估, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人弄兜。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓药蜻,卻偏偏與公主長得像瓷式,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子语泽,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容