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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

看小说有广告?不可能的,分分钟教你爬取小说

發布時間:2025/3/19 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 看小说有广告?不可能的,分分钟教你爬取小说 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

爬取小說

  • 效果
  • 分析網頁
  • 正則表達式分析
  • 請求頭分析
  • 完整代碼
  • 可能出現的錯誤

效果

分析網頁


我們可以看到 小說的章節的標題與對應的鏈接是在<dd></dd>這個節點中的。

進入一章,

我們可以看到 小說內容是在一個id = "content的div 容器中。

正則表達式分析

<dd>.*</dd>

獲得:

<dd><a href='/55/55945/23396080.html' >第一章 我有三個相宮</a></dd>

過濾出URL和標題

href=..([^>"]*)..>(.*)</a>

其中([^>"]*)和(.*) 被稱為組。
所以有

# 組成完整的URLurl = 'https://www.xbiquge.la/'+g.group(1)# 獲取標題title = g.group(2)

請求頭分析

網址是: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('&nbsp;&nbsp;&nbsp;&nbsp;(.*)<',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/
分析網頁的話,盡量別用正則表達式把,要吐血的。

總結

以上是生活随笔為你收集整理的看小说有广告?不可能的,分分钟教你爬取小说的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。