詳解Python爬蟲(chóng)爬取博客園問(wèn)題列表所有的問(wèn)題
可以發(fā)現(xiàn)在div class ='one_entity'中存在頁(yè)面中分別對(duì)應(yīng)每一個(gè)問(wèn)題接著div class ='news_item'中h2標(biāo)簽下是我們想要拿到的數(shù)據(jù)
三.代碼實(shí)現(xiàn)首先導(dǎo)入requests和BeautifulSoup
import requestsfrom bs4 import BeautifulSoup
由于很多網(wǎng)站定義了反爬策略,所以進(jìn)行偽裝一下
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+’頁(yè)爬取成功!’)
注意一下這里,由于我們需要的是多張頁(yè)面的數(shù)據(jù),所以在發(fā)送請(qǐng)求的url中我們就要針對(duì)不同的頁(yè)面發(fā)送請(qǐng)求,https://q.cnblogs.com/list/unsolved?page=我們要做的是在發(fā)送請(qǐng)求的url時(shí)候,根據(jù)參數(shù)來(lái)填充頁(yè)數(shù)page,代碼實(shí)現(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ù)組拿到,進(jìn)行遍歷,通過(guò)取出h2中a標(biāo)簽中的文本,并將每取出來(lái)的文本寫(xiě)入到文件中,由于要遍歷多次,所以保存文件在上面的代碼中。
text_list = page_soup.select(’.one_entity > .news_item > h2’) for h2 in text_list: text = h2.a.string fp.write(text+’n’)
完整代碼如下:
import requestsfrom bs4 import BeautifulSoupif __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+’頁(yè)爬取成功!’)四.運(yùn)行結(jié)果
運(yùn)行代碼:
到此這篇關(guān)于詳解Python爬蟲(chóng)爬取博客園問(wèn)題列表所有的問(wèn)題的文章就介紹到這了,更多相關(guān)Python爬蟲(chóng)爬取列表內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. 低版本IE正常運(yùn)行HTML5+CSS3網(wǎng)站的3種解決方案2. 利用CSS制作3D動(dòng)畫(huà)3. 使用Spry輕松將XML數(shù)據(jù)顯示到HTML頁(yè)的方法4. 測(cè)試模式 - XSL教程 - 55. html5手機(jī)觸屏touch事件介紹6. 用xslt+css讓RSS顯示的跟網(wǎng)頁(yè)一樣漂亮7. 《CSS3實(shí)戰(zhàn)》筆記--漸變?cè)O(shè)計(jì)(一)8. JSP的Cookie在登錄中的使用9. xpath簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理10. 讀大數(shù)據(jù)量的XML文件的讀取問(wèn)題
