溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Python一步完成動態(tài)數(shù)據(jù)的爬取

發(fā)布時間:2021-10-09 16:15:55 來源:億速云 閱讀:177 作者:柒染 欄目:大數(shù)據(jù)

今天就跟大家聊聊有關如何使用Python一步完成動態(tài)數(shù)據(jù)的爬取,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

前言

         最近又到了寫畢業(yè)論文的季節(jié)了,有好多粉絲朋友私信我說老哥能不能幫我爬點數(shù)據(jù)讓我來寫論文,這時正好有位小女生正在打算買只小喵咪,于是老哥在全網(wǎng)搜索于是發(fā)現(xiàn)了下面的網(wǎng)站只好動動自己的小手,來完成這個艱巨的任務了,有喜歡爬蟲的同學,或有需要爬取數(shù)據(jù)的同學可以私聊老哥。

頁面分析

         我們通過訪問一下地址 :http://www.maomijiaoyi.com/index.php?/chanpinliebiao_pinzhong_38.html
         這時我們可以看到一些喵咪的列表,但是通過F12觀看實際是返回的一個頁面,而不是我們常用的Json,此時我們還需要將返回的頁面打開才能獲取到具體喵咪的詳細信息,例如:價格、電話、年齡、品種、瀏覽次數(shù)等等。
如何使用Python一步完成動態(tài)數(shù)據(jù)的爬取
這時我們需要做的

  1. 解析返回的列表

  2. 將地區(qū)數(shù)據(jù)解析出來

  3. 請求喵咪的具體信息

  4. 解析返回的頁面

  5. 將數(shù)據(jù)保存csv文件

CSV 文件

         啟動程序?qū)4嬉幌聝?nèi)容:
如何使用Python一步完成動態(tài)數(shù)據(jù)的爬取

代碼實現(xiàn)

1、導入依賴環(huán)境

`import requests # 返送請求 pip install requests` 
`import parsel # html頁面解析器 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()  ## 標簽`
 `price = selector.css('.info1 span:nth-child(2)::text').get().strip()  ## 價格`
 `viewsNum = selector.css('.info1 span:nth-child(4)::text  ').get()  ## 瀏覽次數(shù)`
 `commitment = selector.css('.info1 div:nth-child(2) span::text  ').get().replace("賣家承諾: ", "")  # 賣家承諾`
 `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()  # 預防`
 `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()  # 運費`
 `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ū)蟲情況`
 `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ū)', '標簽', '價格', '瀏覽次數(shù)', '賣家承諾', '在售只數(shù)', '地區(qū)', '品種', '預防', '聯(lián)系人姓名', '電話',`
 `'運費', '是否純種', '待售數(shù)量', '貓咪性別', '貓咪年齡', '驅(qū)蟲情況', '可視頻看貓咪', '詳情地址'])`
`#設置頭`
`csvHeader.writeheader()`
 `dis = {`
 `'地區(qū)': address,`
 `'標簽': title,`
 `'價格': price,`
 `'瀏覽次數(shù)': viewsNum,`
 `'賣家承諾': commitment,`
 `'在售只數(shù)': onlineOnly,`
 `'品種': variety,`
 `'預防': prevention,`
 `'聯(lián)系人姓名': contactPerson,`
 `'電話': phone,`
 `'運費': shipping,`
 `'是否純種': purebred,`
 `'待售數(shù)量': quantityForSale,`
 `'貓咪性別': catSex,`
 `'貓咪年齡': catAge,`
 `'驅(qū)蟲情況': dewormingSituation,`
 `'可視頻看貓咪': canWatchCatsInVideo,`
 `'詳情地址': url`
 `}`
 `csvHeader.writerow(dis)`

看完上述內(nèi)容,你們對如何使用Python一步完成動態(tài)數(shù)據(jù)的爬取有進一步的了解嗎?如果還想了解更多知識或者相關內(nèi)容,請關注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI