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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

翻页爬取果壳问答

發(fā)布時間:2024/3/12 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 翻页爬取果壳问答 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

翻頁爬取果殼問答

本次案例的目的:為了重點介紹一下如何提取響應(yīng)數(shù)據(jù)中的html數(shù)據(jù)。

爬取過程:

1.找到目標的url
2.構(gòu)造請求頭參數(shù)
3.發(fā)送請求,獲取響應(yīng)
4.解析數(shù)據(jù)
5.保存數(shù)據(jù)

爬取過程需要注意的點:

1.創(chuàng)建翻頁
通過requests翻頁爬取數(shù)據(jù),需要創(chuàng)建for循環(huán),并且找到url的規(guī)律并且格式化輸出。

2.添加if判斷語序
由于第一頁的url沒有page參數(shù),所以第一頁的url需要單獨列舉。

3.解析數(shù)據(jù)時,需要通過xpathhelper協(xié)助找到數(shù)據(jù)所在的html節(jié)點

4.在同一個pycharm文件中保存文本數(shù)據(jù)時,寫入方式為“a追加的方式”。

首先找到目標的url:

找到不同頁url的規(guī)律:


由前三頁的url,我們可以的到的規(guī)律是:

第一頁沒有page參數(shù),從第二頁開始,page參數(shù)的值為2,第三頁為3…依次類推,因此,我們for循環(huán)的規(guī)律為如果i=0,那么page參數(shù)就不存在,否則page = i+1 。

解析數(shù)據(jù)


我們鼠標右鍵點擊標題,點擊檢查可以找到問題和回答所在的節(jié)點。

那么檢驗提取數(shù)據(jù)提取的方式就通過xpathhelper來完成:

通過節(jié)點的位置和節(jié)點所攜帶的屬性,對目標文本進行定位。

翻頁規(guī)律和數(shù)據(jù)解析方法已確定,開始我們的代碼:

import requests from lxml import etree import jsonif __name__ == '__main__':# 輸入爬取的頁數(shù)pages = int(input('請輸入要爬取的頁數(shù):'))for i in range(pages):# 確認目標的urlif i == 0:url = 'https://www.guokr.com/i/1948640618/answers/'else:page = i+1url = f'https://www.guokr.com/i/1948640618/answers/?page={page}'# 構(gòu)造請求頭參數(shù)headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36'}# 發(fā)送請求,獲取響應(yīng)response = requests.get(url,headers=headers)# 數(shù)據(jù)為html數(shù)據(jù)str_data = response.textpy_data = etree.HTML(str_data)# 提取目標數(shù)據(jù) 1.問題,2.回答question_list = py_data.xpath('//h4/a[@target="_blank"]/text()')answer_list = py_data.xpath('//li/p/text()')# 保存為字典的形式for i in range(len(question_list)):dict_ = {}dict_[question_list[i]] = answer_list[i]# 將字典轉(zhuǎn)化成json數(shù)據(jù)json_data = json.dumps(dict_,ensure_ascii=False)+',\n'# 保存數(shù)據(jù)with open('翻頁果殼問答3.json','a',encoding='utf-8')as f:f.write(json_data)

我爬取了3頁,因為每一頁的問題和回答的個數(shù)并不是固定的,(第一頁10個,第二頁2個,第三頁7個)得到的數(shù)據(jù)如下:

這里說明一下為什么要用json文件保存數(shù)據(jù):是為了讓字典形式的數(shù)據(jù)更加直觀和美觀,方便我們查看。

總結(jié)

以上是生活随笔為你收集整理的翻页爬取果壳问答的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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