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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

爬虫实战——爬取小说《从你的全世界路过》

發(fā)布時間:2024/3/12 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 爬虫实战——爬取小说《从你的全世界路过》 小編覺得挺不錯的,現(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=i

1.2 篩選出小的部分

使用findall()來獲取所有的href鏈接。
然后將其寫成函數(shù)

def get_href():html=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=is=re.findall('href="(.*?)"',html_sers,re.S)lst=[]for i in s:lst.append("https://www.kanunu8.com/book2/10748/"+i)return lst

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)容,希望文章能夠幫你解決所遇到的問題。

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