今天就跟大家聊聊有關(guān)如何使用Python一步完成動(dòng)態(tài)數(shù)據(jù)的爬取,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
為承德縣等地區(qū)用戶(hù)提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及承德縣網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)、承德縣網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶(hù)提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶(hù)的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
最近又到了寫(xiě)畢業(yè)論文的季節(jié)了,有好多粉絲朋友私信我說(shuō)老哥能不能幫我爬點(diǎn)數(shù)據(jù)讓我來(lái)寫(xiě)論文,這時(shí)正好有位小女生正在打算買(mǎi)只小喵咪,于是老哥在全網(wǎng)搜索于是發(fā)現(xiàn)了下面的網(wǎng)站只好動(dòng)動(dòng)自己的小手,來(lái)完成這個(gè)艱巨的任務(wù)了,有喜歡爬蟲(chóng)的同學(xué),或有需要爬取數(shù)據(jù)的同學(xué)可以私聊老哥。
我們通過(guò)訪問(wèn)一下地址 :http://www.maomijiaoyi.com/index.php?/chanpinliebiao_pinzhong_38.html
這時(shí)我們可以看到一些喵咪的列表,但是通過(guò)F12觀看實(shí)際是返回的一個(gè)頁(yè)面,而不是我們常用的Json,此時(shí)我們還需要將返回的頁(yè)面打開(kāi)才能獲取到具體喵咪的詳細(xì)信息,例如:價(jià)格、電話、年齡、品種、瀏覽次數(shù)等等。
這時(shí)我們需要做的
解析返回的列表
將地區(qū)數(shù)據(jù)解析出來(lái)
請(qǐng)求喵咪的具體信息
解析返回的頁(yè)面
將數(shù)據(jù)保存csv文件
啟動(dòng)程序?qū)?huì)保存一下內(nèi)容:
1、導(dǎo)入依賴(lài)環(huán)境
`import requests # 返送請(qǐng)求 pip install requests` `import parsel # html頁(yè)面解析器 pip install parsel` `import csv # 文本保存`
2、獲取喵咪的列表
`url = "http://www.maomijiaoyi.com/index.php?/chanpinliebiao_pinzhong_37_"+str(i)+"--24.html"` `headers = {` `'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36'` `}` `data = requests.get(url=url, headers=headers).text` `selector = parsel.Selector(data)` `urls = selector.css('div .content:nth-child(1) a::attr(href)').getall()`
3、根據(jù)去獲取喵咪的具體數(shù)據(jù)
`for s in regionAndURL:` `url = "http://www.maomijiaoyi.com" + s[0]` `address = s[1]` `data = requests.get(url=url, headers=headers).text` `selector = parsel.Selector(data)` `title = selector.css('.detail_text .title::text').get().strip() ## 標(biāo)簽` `price = selector.css('.info1 span:nth-child(2)::text').get().strip() ## 價(jià)格` `viewsNum = selector.css('.info1 span:nth-child(4)::text ').get() ## 瀏覽次數(shù)` `commitment = selector.css('.info1 div:nth-child(2) span::text ').get().replace("賣(mài)家承諾: ", "") # 賣(mài)家承諾` `onlineOnly = selector.css('.info2 div:nth-child(1) .red::text ').get() # 在售只數(shù)` `variety = selector.css('.info2 div:nth-child(3) .red::text ').get() # 品種` `prevention = selector.css('.info2 div:nth-child(4) .red::text ').get() # 預(yù)防` `contactPerson = selector.css('.user_info div:nth-child(1) .c333::text ').get() # 聯(lián)系人姓名` `phone = selector.css('.user_info div:nth-child(2) .c333::text ').get() ## 電話` `shipping = selector.css('.user_info div:nth-child(3) .c333::text ').get().strip() # 運(yùn)費(fèi)` `purebred = selector.css('.item_neirong div:nth-child(1) .c333::text').get().strip() # 是否純種` `quantityForSale = selector.css('.item_neirong div:nth-child(3) .c333::text').get().strip() # 待售數(shù)量` `catSex = selector.css('.item_neirong div:nth-child(4) .c333::text').get().strip() # 貓咪性別` `catAge = selector.css('div.xinxi_neirong .item:nth-child(2) div:nth-child(2) .c333::text').get().strip() # 貓咪年齡` `dewormingSituation = selector.css(` `'div.xinxi_neirong .item:nth-child(2) div:nth-child(3) .c333::text').get().strip() # 驅(qū)蟲(chóng)情況` `canWatchCatsInVideo = selector.css(` `'div.xinxi_neirong .item:nth-child(2) div:nth-child(4) .c333::text').get().strip() # 可視頻看貓咪`
4、將數(shù)據(jù)保存為csv文件
`f = open('喵咪.csv', mode='a', encoding='utf-8', newline='')` `csvHeader = csv.DictWriter(f,` `fieldnames=['地區(qū)', '標(biāo)簽', '價(jià)格', '瀏覽次數(shù)', '賣(mài)家承諾', '在售只數(shù)', '地區(qū)', '品種', '預(yù)防', '聯(lián)系人姓名', '電話',` `'運(yùn)費(fèi)', '是否純種', '待售數(shù)量', '貓咪性別', '貓咪年齡', '驅(qū)蟲(chóng)情況', '可視頻看貓咪', '詳情地址'])` `#設(shè)置頭` `csvHeader.writeheader()` `dis = {` `'地區(qū)': address,` `'標(biāo)簽': title,` `'價(jià)格': price,` `'瀏覽次數(shù)': viewsNum,` `'賣(mài)家承諾': commitment,` `'在售只數(shù)': onlineOnly,` `'品種': variety,` `'預(yù)防': prevention,` `'聯(lián)系人姓名': contactPerson,` `'電話': phone,` `'運(yùn)費(fèi)': shipping,` `'是否純種': purebred,` `'待售數(shù)量': quantityForSale,` `'貓咪性別': catSex,` `'貓咪年齡': catAge,` `'驅(qū)蟲(chóng)情況': dewormingSituation,` `'可視頻看貓咪': canWatchCatsInVideo,` `'詳情地址': url` `}` `csvHeader.writerow(dis)`
看完上述內(nèi)容,你們對(duì)如何使用Python一步完成動(dòng)態(tài)數(shù)據(jù)的爬取有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。