詳解Python爬蟲爬取博客園問題列表所有的問題
一.準備工作
- 首先,本文使用的技術(shù)為 python+requests+bs4,沒有了解過可以先去了解一下。
- 我們的需求是將博客園問題列表中的所有問題的題目爬取下來。
二.分析:
- 首先博客園問題列表頁面右鍵點擊檢查
- 通過Element查找問題所對應(yīng)的屬性或標簽

可以發(fā)現(xiàn)在div class ="one_entity"中存在頁面中分別對應(yīng)每一個問題
接著div class ="news_item"中h2標簽下是我們想要拿到的數(shù)據(jù)
三.代碼實現(xiàn)
首先導(dǎo)入requests和BeautifulSoup
import requests from bs4 import BeautifulSoup
由于很多網(wǎng)站定義了反爬策略,所以進行偽裝一下
headers = {
'User-Agent': 'Mozilla / 5.0(WindowsNT10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 87.0.4280.141Safari / 537.36'
}
在這里User-Agent只是其中的一種方式,而且大家的User-Agent可能不同。
爬取數(shù)據(jù)main代碼
url = 'https://q.cnblogs.com/list/unsolved?'
fp = open('blog', 'w', encoding='utf-8')
for page in range(1,26):
page = str(page)
param = {
'page':page
}
page_text = requests.get(url=url,params=param,headers=headers).text
page_soup = BeautifulSoup(page_text,'lxml')
text_list = page_soup.select('.one_entity > .news_item > h2')
for h2 in text_list:
text = h2.a.string
fp.write(text+'\n')
print('第'+page+'頁爬取成功!')
注意一下這里,由于我們需要的是多張頁面的數(shù)據(jù),所以在發(fā)送請求的url中我們就要針對不同的頁面發(fā)送請求,https://q.cnblogs.com/list/unsolved?page=我們要做的是在發(fā)送請求的url時候,根據(jù)參數(shù)來填充頁數(shù)page,
代碼實現(xiàn):
url = 'https://q.cnblogs.com/list/unsolved?'
for page in range(1,26):
page = str(page)
param = {
'page':page
}
page_text = requests.get(url=url,params=param,headers=headers).text
將所有的h2數(shù)組拿到,進行遍歷,通過取出h2中a標簽中的文本,并將每取出來的文本寫入到文件中,由于要遍歷多次,所以保存文件在上面的代碼中。
text_list = page_soup.select('.one_entity > .news_item > h2')
for h2 in text_list:
text = h2.a.string
fp.write(text+'\n')
完整代碼如下:
import requests
from bs4 import BeautifulSoup
if __name__ == '__main__':
headers = {
'User-Agent': 'Mozilla / 5.0(WindowsNT10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 87.0.4280.141Safari / 537.36'
}
url = 'https://q.cnblogs.com/list/unsolved?'
fp = open('blog', 'w', encoding='utf-8')
for page in range(1,26):
page = str(page)
param = {
'page':page
}
page_text = requests.get(url=url,params=param,headers=headers).text
page_soup = BeautifulSoup(page_text,'lxml')
text_list = page_soup.select('.one_entity > .news_item > h2')
for h2 in text_list:
text = h2.a.string
fp.write(text+'\n')
print('第'+page+'頁爬取成功!')
四.運行結(jié)果
運行代碼:


到此這篇關(guān)于詳解Python爬蟲爬取博客園問題列表所有的問題的文章就介紹到這了,更多相關(guān)Python爬蟲爬取列表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Python設(shè)置,更新和獲取Excel單元格的值
Excel工作簿作為一款廣泛使用的數(shù)據(jù)管理工具,與Python相結(jié)合,可以使得自動化處理大量數(shù)據(jù)成為可能,本文將演示如何使用Python設(shè)置、更新以及獲取Excel文件中單元格的值,希望對大家有所幫助2024-10-10
淺談配置OpenCV3 + Python3的簡易方法(macOS)
下面小編就為大家分享一篇淺談配置OpenCV3 + Python3的簡易方法(macOS),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04
Python基于Faker假數(shù)據(jù)構(gòu)造庫
這篇文章主要介紹了Python基于Faker假數(shù)據(jù)構(gòu)造庫,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-11-11
python實現(xiàn)不同文件夾下的函數(shù)相互調(diào)用
這篇文章主要介紹了python實現(xiàn)不同文件夾下的函數(shù)相互調(diào)用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
Python+OpenCV實現(xiàn)相機標定的方法詳解
opencv中內(nèi)置了張正友的棋盤格標定法,通過一些姿態(tài)各異的棋盤格圖像,可以標定相機的內(nèi)外參數(shù),本文為大家介紹OpenCV進行相機標定的具體方法,希望對大家有所幫助2023-05-05
Python統(tǒng)計純文本文件中英文單詞出現(xiàn)個數(shù)的方法總結(jié)【測試可用】
這篇文章主要介紹了Python統(tǒng)計純文本文件中英文單詞出現(xiàn)個數(shù)的方法,結(jié)合實例形式總結(jié)分析了Python針對文本文件的讀取,以及統(tǒng)計文本文件中英文單詞個數(shù)的4種常用操作技巧,需要的朋友可以參考下2018-07-07

