久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

超詳細(xì)的python爬蟲案例,,一次爬取上百篇文章

 晴耕雨讀天 2020-04-05

一次爬多篇文章,邏輯是先從主網(wǎng)址爬到每篇文章的網(wǎng)址,,再從各個網(wǎng)址處爬取文章,,很簡單的靜態(tài)網(wǎng)頁爬取,不需考慮反扒問題,。話不多說,,直接案例說話,。

實(shí)例:從https://www./book/24032/,,爬取小說的全部章節(jié)的內(nèi)容。

超詳細(xì)的python爬蟲案例,一次爬取上百篇文章

圖1

實(shí)現(xiàn)方法:requests 訪問 + BeautifulSoup解析

1,、目標(biāo)網(wǎng)址是靜態(tài)網(wǎng)頁,,瀏覽網(wǎng)址和數(shù)據(jù)網(wǎng)址相同,可直接使用,。

import requests # 導(dǎo)入requests庫from bs4 import BeautifulSoup # 導(dǎo)入BeautifulSoup庫url = ''https://www./book/23341/'' # 準(zhǔn)備好目標(biāo)網(wǎng)址

2,、requests訪問網(wǎng)址獲得網(wǎng)頁

打開瀏覽器控制臺,查看Network下的Response發(fā)現(xiàn)有我們需要用的章節(jié)的標(biāo)題和鏈接,,用requests訪問網(wǎng)址,,就是為了獲取下圖中response界面下紅框的內(nèi)容。

超詳細(xì)的python爬蟲案例,,一次爬取上百篇文章

圖2

requests訪問網(wǎng)址代碼:

import requestsfrom bs4 import BeautifulSoupurl = ''https://www./book/23341/''response= requests.get(url)                           #  requests訪問網(wǎng)址,,獲得的內(nèi)容放入response

獲得的內(nèi)容放入response變量(自定義,可隨意?。├?。

3、BeautifulSoup解析網(wǎng)頁獲得內(nèi)容

用BeautifulSoup解析response變量里的內(nèi)容,,方法為:

import requestsfrom bs4 import BeautifulSoupurl = ''https://www./book/23341/''response= requests.get(url)soup = BeautifulSoup(response.content, 'lxml') # BeautifulSoup解析response里的內(nèi)容,,放入soup里

現(xiàn)在網(wǎng)頁內(nèi)容已經(jīng)被賦值到變量soup了,此時若打印s,,會得到上面圖2紅框的內(nèi)容,。

4、解析內(nèi)容爬取小說名,,并用其創(chuàng)建一個文件夾,,以備放后面下載的小說正文

通過在response里查找,我們發(fā)現(xiàn)標(biāo)題在圖3如下位置有出現(xiàn):

超詳細(xì)的python爬蟲案例,,一次爬取上百篇文章

圖3

booktitle = soup.find('h1').textif not os.path.isdir(booktitle):  # 判斷當(dāng)前文件夾下是否存在和小說名同名的文件夾    os.makedirs(booktitle)  # 若不存在,,則創(chuàng)建小說同名文件夾

超詳細(xì)的python爬蟲案例,一次爬取上百篇文章

圖4,,爬取小說名

5,、繼續(xù)用BeautifulSoup解析soup內(nèi)容,獲得章節(jié)標(biāo)題及網(wǎng)址

繼續(xù)在圖2response里查找,,發(fā)現(xiàn)章節(jié)信息都在dd標(biāo)簽下的a標(biāo)簽里,,如圖5:

超詳細(xì)的python爬蟲案例,一次爬取上百篇文章

圖5

提取章節(jié)標(biāo)題和鏈接代碼:

import requestsfrom bs4 import BeautifulSoup............dd = soup.find_all('dd')for i in range(len(dd)): title = dd[i].find('a').text # 獲得章節(jié)名 chap_url = dd[i].find('a')['href'] # 獲得章節(jié)鏈接 print(title, ': ', chap_url) # 臨時打印查看效果如下圖

超詳細(xì)的python爬蟲案例,,一次爬取上百篇文章

圖6

5,、循環(huán)遍歷訪問章節(jié)鏈接,獲得小說正文

通過上面的操作,,我們獲得了每一章節(jié)頁面的具體網(wǎng)址鏈接,,繼續(xù)用requests訪問鏈接,,就能獲得小說的網(wǎng)頁頁面,接著用BeautifulSoup解析獲得小說內(nèi)容,。我們可用簡單方法,,快速找到小說內(nèi)容所在位置:在小說頁面正文區(qū)域右鍵單擊,選擇“檢查”或“審查元素”,,會自動彈出瀏覽器控制臺并高亮顯示的正文在網(wǎng)頁頁面里的位置,,分析確定提取參數(shù)即可。

超詳細(xì)的python爬蟲案例,,一次爬取上百篇文章

圖7

超詳細(xì)的python爬蟲案例,,一次爬取上百篇文章

自動高亮顯示位置

通過上面的操作,我們能輕松的找到小說文本在網(wǎng)頁里的位置,,并能知道兩個參數(shù),,標(biāo)簽:'div';id:'content',,然后通過這兩個參數(shù)提取出小說文本,。

import requestsfrom bs4 import BeautifulSoup............for i in range(len(dd)):    if i == 2:    #  臨時設(shè)置只看第3篇文章的打印效果,用于調(diào)試        title = dd[i].find('a').text        chap_url = dd[i].find('a')['href']        response1 = requests.get('https://www.' + chap_url) #訪問鏈接        soup1 = BeautifulSoup(response1.content, 'lxml')   # 獲得網(wǎng)頁        text = soup1.find('div', id='content').text   #解析網(wǎng)頁獲得小說正文        print(text)      # 試打印看效果

超詳細(xì)的python爬蟲案例,,一次爬取上百篇文章

圖8,,打印第3篇正文成功

6、保存結(jié)果

f = open(path + '/' + title + '.txt', 'a+', encoding='utf-8') # 設(shè)置章節(jié)標(biāo)題為文件名 f.write(text) # 寫入小說正文

至此,,代碼完成,,能放心下載了。

7,、運(yùn)行效果

我們在完整代碼里,,設(shè)置一次性下載100章節(jié)的代碼,來看看下載的效果,。完整代碼:

import requests, osfrom bs4 import BeautifulSoupurl = 'https://www./book/23341/'response = requests.get(url)soup = BeautifulSoup(response.content, 'lxml') booktitle = soup.find('h1').textif not os.path.isdir(booktitle):  # 判斷當(dāng)前文件夾下是否存在和小說名同名的文件夾    os.makedirs(booktitle)  # 若不存在,,則創(chuàng)建小說同名文件夾dd = soup.find_all('dd')for i in range(len(dd)):    if i < 100:        title = dd[i].find('a').text        chap_url = dd[i].find('a')['href']        response1 = requests.get('https://www.' + chap_url)        soup1 = BeautifulSoup(response1.content, 'lxml')        text = soup1.find('div', id='content').text        f = open(booktitle + '/' + title + '.txt', 'a+', encoding='utf-8')        f.write(text)        print('正在下載《 {} 》...... {} / {} '.format(title, i+1, len(dd)))    else:        breakprint('本次共下載 {} 章, 保存地址:{}'.format(i, os.getcwd() + '\\' + booktitle + '\\'))

運(yùn)行效果:

超詳細(xì)的python爬蟲案例,,一次爬取上百篇文章

超詳細(xì)的python爬蟲案例,,一次爬取上百篇文章

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多