爬虫爬取《全职法师》并保存到本地

同学想看全职法师,但是又不想看广告 让我帮他写一个爬虫~~

首先找一个看起来很好爬的网站:https://www.50zw.co/

找到全职法师,遇到的第一个问题就是编码的问题,明明网站上显示是utf-8,但是爬下来就是乱码,hin奇怪

折腾许久,终于找到解决方法:

    r=requests.get(url) 
    r.encoding='gb2312'#解决中文不能正常显示

现在终于可以愉快的爬虫了

这里还有一个问题,就是爬下来的数据将每一段的换行符认成了乱码:

    
我看它网站的结构相当清晰,那就直接用这个当正则好了~~
然后是页面跳转,这个也很简单,我发现它最后一章的“下一章”是跳转到小说的首页上的,所以直接加一个while循环就好了~~
最后是写到文件里,这里直接用with open打开,然后把每一个正则出来的元素写进去就好了
直接上代码吧:
import re
import requests
url="https://www.50zw.co/book_23635/10153020.html"
while url!="https://www.50zw.co/book_23635/":
    h="<h1>(.+?)</h1>"
    r=requests.get(url) 
    r.encoding='gb2312'#解决中文不能正常显示
    #print(r.text)
    hh=re.findall(h,r.text)
    print(hh[0])
    maintxt="""&nbsp;&nbsp;&nbsp;&nbsp;(.+?)<br />"""
    nexturl="""<a href="(.+?)" class='next pager_next'>下一章</a>"""
    nurl=re.findall(nexturl,r.text)
    texts=re.findall(maintxt,r.text,re.DOTALL)
    url=nurl[0]
    #print(texts)
    with open("全职法师.txt",'a',encoding='utf-8') as f:
        f.write(hh[0]+'\n')
        for i in texts:
            f.write("    "+i+'\n')
        print(hh[0],"success!")

猜你喜欢

转载自www.cnblogs.com/dyhaohaoxuexi/p/11644319.html