本教程仅用作练习
分析
某小说网站:https://www.qq717.com
选一部你们喜欢的小说,就拿博主比较喜欢看的一部小说——剑来作为示范(请大家支持正版小说,本文只作为爬虫练习使用)
原理比较简单,直接上代码
代码
import requests
from bs4 import BeautifulSoup
import re #正则表达式的库
novel_url = "https://www.qq717.com/html/143/143749/"
header_dic = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}
respon = requests.get(novel_url)
respon.encoding = 'utf-8' #编码格式
soup = BeautifulSoup(respon.text,'lxml')#解析器
urls = soup.find_all('dd') #获取每个章节
lst_url=re.findall('<a href="(.*?)">',str(urls),re.S) #获取章节的链接href (.*?)表示匹配任何字符 非贪婪模式 lst_url里面的是(.*?)里面的东西 是一个列表
#遍历每一个链接地址
for i in range(len(lst_url)):
tmp_url = 'https://www.qq717.com'+lst_url[i]#组合得到章节链接
respon = requests.get(tmp_url)
respon.encoding = 'utf-8'
soup = BeautifulSoup(respon.text,'lxml')#解析器
content = soup.find('div',{'id':'content'}).get_text()#获取章节题目
title = soup.find('div',{'class':'bookname'}).find('h1').get_text()#获取章节内容
print('正在下载……'+title)
# print(content)
with open('剑来.txt','a',encoding='utf-8') as filename:# a 为往file后追加内容
filename.write(title)
filename.write('\n')
filename.write(content)