版本(一):
全部代碼如下
介紹:這個版本 可以把一個小說的所有章節都爬取下來
缺點:1:爬取效率低下,2:把最新章節也爬取下來了
思路介紹:
1:先到單個小說的頁面
2:使用開發者模式,查看單個章節的a標簽--->點擊查看的標簽--->跳轉到該章節的頁面
3:使用xpath獲取到所有的a標簽 中的href內容
4:對href標簽的內容進行拼接
5:for回圈 挨個請求拼接好的url
6:保存獲取到的內內容
完成
import requests
from lxml import etree
#請求url
def get_url(url):
response = requests.get(url=url, headers=headers)
html = etree.HTML(response.text)
return html
#定義路徑拼接函式
def pj_url(url):
return 'https://www.biquge.com' + url
#主函式
def resp(url):
html = get_url(url)
#獲取小說名稱
title_name = html.xpath('//h1/text()')[0]
all_name = html.xpath('//dd/a') #獲取所有小說
# response_url = html.xpath('//dd/a/@href')
for name in all_name:
xs_url = name.xpath('./@href')[0] #獲取單個小說的章節
#路徑拼接
complete_url = pj_url(xs_url) #將單個小說的路徑拼接
#對單個章節的內部內容進行資料清洗
tible,txt = chapter(complete_url)
txt = tible+'\n'+txt+'\n'
# 獲取到了單個章節的所有內容后 進行保存
with open('{}2.txt'.format(title_name),'a',encoding='utf-8') as fp:
print('{}下載完成'.format(tible))
fp.write(txt)
#獲取單個章節內容
def chapter(url):
#獲取內容
# 請求單個章節的路徑
html = get_url(url)
#獲取章節小說的名稱
tible = html.xpath('//h1/text()')[0]
#獲取章節小說正文
txt_list = html.xpath('//div[@id="content"]/text()')
#對小說正文部分資料清洗,將處理好的內容保存到lis中
lis = []
for txt in txt_list:
i = txt.replace('\t','').replace('\n','').replace('\r','').replace("'",'').replace('\u3000','')
lis.append(i)
return tible,str(lis)[2:-2].replace(r"'",'')
if __name__ == '__main__':
#小說主路由
# url = 'https://www.biquge.com/31_31729/'#示例路由
url = input("請輸入您想爬取的小說url:")
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3823.400 QQBrowser/10.7.4307.400',
# 'Cookie': 'obj=1; obj=1; UM_distinctid=176075e86b6258-0324a78ee682e2-3352487a-144000-176075e86b7515; CNZZDATA1278908080=321056136-1606439687-%7C1606981381; CNZZDATA1278862532=1058624029-1606436902-%7C1606978830'
}
resp(url)
運行效果如下


轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/231600.html
標籤:python
上一篇:Django框架學習1
下一篇:springboot+sercuity+oauth2+Jwt+手機號+微信+密碼 企業級認證與授權原理以及實作(完整版)
