网文爬虫(一)

抓取盗版脆皮鸭网文
以《当年万里觅封侯》为例

  1. 章节的url不连续,要从网页获取下一章url
  2. 用到的库:urllib、bs4、re
  3. 写入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)




猜你喜欢

转载自blog.csdn.net/Severus_20/article/details/89352236