抓取盗版脆皮鸭网文
以《当年万里觅封侯》为例
- 章节的url不连续,要从网页获取下一章url
- 用到的库:urllib、bs4、re
- 写入txt时注意编码
from bs4 import BeautifulSoup
from urllib import request
import re
alli=[]
alltext=[]
i=25870136
#第一章
quanwen = re.compile(r'</script>(.*)<br/>')
#正文部分的正则表达式
while i <= 26417646: #最后一章
urlall = 'https://www.fpzw.com/xiaoshuo/109/109816/%s.html'%i
text = request.urlopen(urlall).read()
bs = BeautifulSoup(text,'html.parser')
soup = str(bs)
ut=bs.findAll('a') #找出当前页面所有链接
ut1 = list(ut)
'''
for i in ut1:
print(i)
print(ut1.index(i))
#发现下一章的索引是25
'''
nexti=str(ut1[25])
nextre = re.compile('109816/(.*).html')
nextch = nextre.findall(nexti)
i = int(nextch[0])
alli.append(i)
mo1 = quanwen.findall(soup)
alltext.append(mo1)
t=sum((x if type(x)is list else [x] for x in alltext), [])
#alltext是一个列表组成的列表,此处将其合并为一个列表
al='\n'.join(t)
#将列表合并为字符串
huanhang=re.compile(r'<br/><br/>')
al1=huanhang.sub('\n',al)
#下载下来的正文中,段落结束处有<br/><br/>,将其替换为换行符
#将全文写入txt,Windows新文件默认编码gbk,要改变目标文件编码为utf-8
f=open('当年万里觅封侯.txt','w',encoding='utf-8')
f.write(al1)