爬虫实战——爬取小说《从你的全世界路过》
生活随笔
收集整理的這篇文章主要介紹了
爬虫实战——爬取小说《从你的全世界路过》
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
前言
最近在看一本講爬蟲的書,這里嘗試著做一個實戰(zhàn)。現(xiàn)在的境界相當(dāng)于,是已經(jīng)邁過門檻,走到門口,學(xué)會了小手槍的使用,愉悅,并且到處瞄準(zhǔn)嘗試,三天一線。以后的路可能就是從廣度和深度來擴展了吧。除了這種射擊模式,還有其他的射擊模式需要學(xué)習(xí),不止手中的這把槍,還有其他槍需要了解和使用。
思路
先抓大,再抓小。然后正則過濾,多線程爬取。
采用廣度搜索的方法爬取。
嵌套
練習(xí)
目標(biāo)url:https://www.kanunu8.com/book2/10748/index.html
1. 抓取文章鏈接
首先要做的就是判斷我們抓取的部分是那些。這里可以看到其中所有的章節(jié)都是被tbody這個標(biāo)簽來包裹的,那么我們就先把這一部分弄出來。
1.1 抓大的部分
導(dǎo)入我們需要的包
import re import requests import os from multiprocessing.dummy import Pool然后抓取
import requests import os from multiprocessing.dummy import Poolhtml=requests.get("https://www.kanunu8.com/book2/10748/index.html").content.decode('gb2312') html_ser=re.findall("tbody>(.*?)</tbody",html,re.S).group(1)這里有一個為什么要使用gb2312這個編碼格式。
因為他網(wǎng)站charset用了這個,so。
由于這里沒有找到一個合適的唯一截取點,所以使用findall的方式來找
import re import requests import os from multiprocessing.dummy import Pool import timehtml=requests.get("https://www.kanunu8.com/book2/10748/index.html").content.decode('gb2312') html_ser=re.findall("tbody>(.*?)</tbody",html,re.S) for i in html_ser:if re.search("第一夜",i,re.S)!=None:html_sers=i1.2 篩選出小的部分
使用findall()來獲取所有的href鏈接。
然后將其寫成函數(shù)
2.文章爬取
找到了href之后,那么我們就可以寫我們的單個文章的爬取了。
def ends(href):html=requests.get(href).content.decode('gbk')title=re.search('<font color="#dc143c">(.*?)</font',html,re.S).group(1)text_block=re.search('<p>(.*?)</p>',html,re.S).group(1)text_block=text_block.replace('<br>',"")save(title,text_block)將我們爬好的數(shù)據(jù)寫入txt
def save(title,text):with open(os.path.join('從你的全世界路過',title+'.txt'),'w',encoding="utf-8") as f:f.write(text)3. 開啟多線程
href=get_href() print (href) pool=Pool(5) pool.map(ends,href)4. 最終效果
總結(jié)
以上是生活随笔為你收集整理的爬虫实战——爬取小说《从你的全世界路过》的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode1079. 活字印刷(回
- 下一篇: ZJYYC 活字印刷 DFS