beautifulsoup爬取网页中的表格_带你用Python爬取全篇小说

我小编这次又给大家带来了python爬虫案例,这次我们爬取小说内容,喜欢看小说的同学可以收藏起来了!!

和上篇一样我们先来分析一下项目,整理一下我们的爬虫思路,理清大体结构,看看我们需要哪些工具:

项目分析

由于小编也不经常看小说所以就随便找了一个小说网站https://www.555x.org/

我们首先来到网站的小说top榜查看一下网页源码

9767a4eab09c235d67c8225a581e6b2e.png

还是可以清楚的看到top榜里的小说全都在<li>标签中这就为我们的爬虫带来了很大的便利,只需要获取每个li标签里的内容就可以完成。

加下来我们找找文件在哪里下载,我们继续点击斗破苍穹来到下面的页面

cba8e6089900a0e37d1c517f1865f5bd.png

我们继续点击进去看到了文件的下载链接,为了能够使爬虫的代码更加简单我们来看看这个链接和之前li标签里的小说链接有什么不同

5517ef044514d8a7bee7287f298d9dee.png

下载链接:"https://www.555x.org/home/down/txt/id/19868"

小说页面链接:"https://www.555x.org/html/xuanhuan/txt19868.html"

可以看到他们有相同的一串编号,这样我们只需要获取每个小说的编号就能获得所有小说的下载链接了,下面我们来完善我们的代码。

代码编写

这个项目我们需要的库有requests库,BeautifulSoup库

经过上面的思路整理我们先建立起我们的爬虫框架:

cbac059b9544885775d2d501158d8f12.png

我画了个流程图来让大家更好的理解我们的结构

62ce8eaa3c100b16a969c3b92e1f832d.png

好我们看看每个部分的代码是什么:

网页请求的代码几乎是通用的没次爬虫都可以原封不动的复制粘贴(这个代码无法解决反爬)

def getHTMLtext(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36"
    }
    try:
        r = requests.get(url=url, headers=headers)
        r.raise_for_status()
        r.encoding=r.apparent_encoding
        return r.text
    except:
        print('访问失败')

下面是获取页面每个小说的信息并构造下载链接

def parseHTMLtext(html,down_list):
    soup=BeautifulSoup(html,'html.parser')
    li_list=soup.find('div',class_='chu').find_all('li')
    for li in li_list:
        li_url=li.find('a').attrs['href']
        li_url='https://www.555x.org/home/down/txt/id/'+li_url[-10:-5:1]
        name=li.a.string
        down_list.append([li_url,name])
    pass

下面是文件保存的函数

def savetxt(down_list):
    root='D:小说'
    for down in down_list:
        path=root+down[1]+'.txt'
        txt=requests.get(down[0]).content
        print(down[0])
        with open(path,'wb') as f:
            f.write(txt)
            f.close()
    pass

接下来是主函数

def main():
    url='https://www.555x.org/top.html'
    html=getHTMLtext(url)
    down_list = []
    parseHTMLtext(html,down_list)
    savetxt(down_list)
    print('下载成功')
    pass

好这就是我们的代码框架我们来看看这个代码爬虫的小效果如何:

b7612e57313be3a06207bdaedf12e870.png

f4975c26a06fb21ee52c3c8705c9d8f6.png

可以看到效果还是不错的!!

好了这就是这期的全部内容希望大家能够自己敲代码尝试一下,我也是python爬虫里的一只小白,代码可能并不完善但还是希望得到大家的支持,以后我也会推出更多的文章来一起学习!!

下期我们将给大家分享如何爬取网页图片,大家可以关注一下哟!!!

最后给大家献上完整代码想看立即看小说的可以直接复制粘贴:

import requests
from bs4 import BeautifulSoup

# 网页请求
def getHTMLtext(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36"
    }
    try:
        r = requests.get(url=url, headers=headers)
        r.raise_for_status()
        r.encoding=r.apparent_encoding
        return r.text
    except:
        print('访问失败')

# 网页内容解析
def parseHTMLtext(html,down_list):
    soup=BeautifulSoup(html,'html.parser')
    li_list=soup.find('div',class_='chu').find_all('li')
    for li in li_list:
        li_url=li.find('a').attrs['href']
        li_url='https://www.555x.org/home/down/txt/id/'+li_url[-10:-5:1]
        name=li.a.string
        down_list.append([li_url,name])
    pass

# 文件保存
def savetxt(down_list):
    root='D:小说'
    for down in down_list:
        path=root+down[1]+'.txt'
        txt=requests.get(down[0]).content
        print(down[0])
        with open(path,'wb') as f:
            f.write(txt)
            f.close()
    pass

# 主函数
def main():
    url='https://www.555x.org/top.html'
    html=getHTMLtext(url)
    down_list = []
    parseHTMLtext(html,down_list)
    savetxt(down_list)
    print('下载成功')
    pass

main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值