@TOC获取雪中悍刀行的小说章节
1.获取雪中悍刀行的小说网址:https://www.37zw.net/0/761/
先获取需要爬取小说的网址,然后再在当前页面中解析,它每一章的具体后缀网址信息和章节名称
base_url = 'https://www.37zw.net/0/761/'
Headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0'}
response1 = requests.get(base_url,headers=Headers)
text1 = response1.content.decode('gbk')
html1 = etree.HTML(text1)
api_urls = html1.xpath('//*[@id="list"]/dl/dd/a/@href')
booknames = html1.xpath('//*[@id="list"]/dl/dd/a/text()')
2.获取到的booknames是一个列表,我们可以通过循环该列表,然后依次爬取每一章的具体小说内容,然后再处理一下获取到的文本
for i in range(len(api_urls)):
api_url = api_urls[i]
bookname = booknames[i]
url = base_url + api_url
# print(url ,bookname)
response = requests.get(url, headers=Headers)
text = response.content.decode('gbk')
html = etree.HTML(text)
contexts = html.xpath("//div[@id='content']/text()")
context = str(contexts)
content = context.replace('\\xa0\\xa0\\xa0\\xa0', ' ')
contents = content.replace('\',', ' ')
3.再降处理后的小说文本内容保存到对应的txt文件中
try:
# with open('%s.txt'%bookname,"wb") as f:
while os.path.exists('%s.txt'%bookname): #判断是否已经存在该文件名称
break
else:
with open('%s.txt' % bookname, "wb") as f:
print(bookname)
f.write(contents.encode())
f.close()
time.sleep(0.01)
except Exception as e:
print(e)
continue
总结:
作为爬虫的初学者,先简单的爬取一下静态页面的小说,这一部分还是比较简单的。就我而言,现在还处在初入门的阶段,通过不断学习,增强自己的知识。