這裏選擇使用的python包是requests和lxml
requests負責請求頁面
lxml負責頁面內容的解析和鎖定
#導入相關包
import requests
from lxml import etree
import time
然後是幾個輔助方法
#定義請求函數
def get_html(url,headers):
response = requests.get(url , headers)
return response.content
#定義解析函數
def resolve_html(content):
html = etree.HTML(content);
return html
#寫入txt
def save(novel):
save_path = 'hello.txt'
fp = open(save_path , 'a',encoding='utf-8',newline='\n')
fp.write(novel)
fp.close()
最後是主函數,這裏以爬取筆趣閣站點的<<慶餘年>>爲例
#定義主函數
def main():
domain = 'http://www.xbiquge.la'#主站
dirurl = '/1/1690/'#章節列表頁面
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:61.0) Gecko/20100101 Firefox/61.0'}#自定義header
content = get_html(domain+dirurl,headers)
#獲取各章節地址
pages = resolve_html(content).xpath('//*[@id="list"]/dl/dd/a/@href')
#依次爬取章節內容
for page in pages:
page_content = get_html(domain+page,headers)
time.sleep(1)
html = resolve_html(page_content)
title = html.xpath('//*[@class="bookname"]/h1')[0].text
article = html.xpath('//*[@id="content"]/text()')
print(title)
save(title + '\n')
for part in article:
save(part)
完整代碼:github地址