看小说有广告?不可能的,分分钟教你爬取小说
生活随笔
收集整理的這篇文章主要介紹了
看小说有广告?不可能的,分分钟教你爬取小说
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
爬取小說
- 效果
- 分析網頁
- 正則表達式分析
- 請求頭分析
- 完整代碼
- 可能出現的錯誤
效果
分析網頁
我們可以看到 小說的章節的標題與對應的鏈接是在<dd></dd>這個節點中的。
進入一章,
我們可以看到 小說內容是在一個id = "content的div 容器中。
正則表達式分析
<dd>.*</dd>獲得:
<dd><a href='/55/55945/23396080.html' >第一章 我有三個相宮</a></dd>過濾出URL和標題
href=..([^>"]*)..>(.*)</a>其中([^>"]*)和(.*) 被稱為組。
所以有
請求頭分析
網址是:https://www.xbiquge.la/0/55945/
- ’Host':一般來說 是從左數第一個// 和/之間的。所以這里是www.xbiquge.la
- Cookie:是在一個分號的后邊的數據。
如:
請求頭:
headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36','Host' :'www.xbiquge.la', 'cookie': 'Hm_lpvt_169609146ffe5972484b0957bd1b46d6=1629598903' }完整代碼
import requests import relink = 'https://www.xbiquge.la/0/55945/'headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36','Host' :'www.xbiquge.la', 'cookie': 'Hm_lpvt_169609146ffe5972484b0957bd1b46d6=1629598903' } #獲取小說鏈接得到小說目錄和對應的URL def getCatelogs(url):# 發送請求req = requests.get(link,headers=headers,allow_redirects=False)result = []if req.status_code == 200:# 獲取 HTML 內容html = req.textaList =re.findall('<dd>.*</dd>',html)print(aList)for a in aList:g = re.search('href=..([^>"]*)..>(.*)</a>', a)if g != None:# 組成完整的URLurl = 'https://www.xbiquge.la/'+g.group(1)# 獲取標題title = g.group(2)# 創建一個對象,用于保存標題和URLchapter = {'title':title,'url':url}result.append(chapter)return result # 根據章節目錄,抓取目錄對應的URL指定的小說正文頁面 def getContent(chapters):for chapter in chapters:url = chapter['url']r = requests.get(url,headers=headers)r.encoding = 'utf-8' #避免亂碼if r.status_code == 200:# 打開novel1目錄(自己創建即可),以標題命名f = open('novel/'+chapter['title']+'.txt','a+')# 將內容提取出來contents = re.findall(' (.*)<',r.text)for content in contents:f.write(content)f.close()print(chapter['title'],chapter['url'])getContent(getCatelogs(link))可能出現的錯誤
- 中文亂碼,導致無法存進文件:r.encoding = 'utf-8' #避免亂碼解決。
- 在這里提取到的是相對路徑:需要補充。補充的依據情況不同。如這里是https://www.xbiquge.la/
總結
以上是生活随笔為你收集整理的看小说有广告?不可能的,分分钟教你爬取小说的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python requests 笔记(一
- 下一篇: lxml 和 XPah (爬虫)