这里选择使用的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地址