requests爬取小说

标签: requests  爬取小说

首先先选择一个小说网站,随便选择一章内容,url为http://www.biqukan.com/3_3039/1351331.html

点击鼠标右键,选择审查元素,查看网页结构


查看之后就可以用BeautifulSoup来提取网页中的内容了

import requests
from bs4 import BeautifulSoup
import re
headers = {
    'User-Agent':'Mozilla/4.0(compatible;MSIE 5.5;Windows NT)',}
url = 'http://www.biqukan.com/3_3039/1351331.html'
html = requests.get(url,headers=headers)
# 获取到网页的文本格式
html = html.text
soup = BeautifulSoup(html,'lxml')
# 选择器得到的是一个列表,只有一个元素,要选取第一个
zhangjie = soup.select('div.content h1')[0]
# 得到章节的文本内容
zhangjie = zhangjie.text
print(zhangjie)
# 查找属性是id为'content'且class为'showtxt'的标签
text = soup.find(id='content', class_='showtxt')
# 得到文本内容
text=text.text
# 将得到的文本存入文件中
with open('xiaoshuo.txt','w',encoding='utf-8') as f:
    f.write(zhangjie)
    f.write(text)

运行程序,得到一下结果


然后得到一个名为xiaoshuo.txt的文件,点开该文件就可看到内容,格式有点不美观,但能看就行,意思到了就可以了


这只是爬取了一章网页的内容,接下来我就要将本小说爬取下来了

url=http://www.biqukan.com/3_3039/


鼠标点击右键查看


我们只需爬取正文卷就好了,选取dd标签的时候如果使用find_all的话有点麻烦,本人又是个最不喜欢麻烦的人,直接简单粗暴就用下标截取,能达到目的就行了,虽然代码健壮性差,但能出结果就行。

import requests
from bs4 import BeautifulSoup

# 解析url
def main(url):
    html = requests.get(url, headers=headers)
    html = html.text
    soup = BeautifulSoup(html, 'lxml')
    # 得到神墓正文的dd标签,跳过最新章节
    nr = soup.select('div.listmain dd')[12:]
    # 分别读取其中的dd标签
    for i in nr:
        # 分别取出每个标签的内容和链接
        title = i.text
        url = i.a.get('href')
        # 得到的url不完整,所以做进一步的拼接
        url = 'http://www.biqukan.com' + url
        # 调用解析网页内容的小说正文
        next_page(title,url)

# 解析得到网页的正文
def next_page(title,url):
    txt = requests.get(url)
    html = txt.text
    # 进一步解析每一张url的网页内容
    soup = BeautifulSoup(html, 'lxml')
    # 查找属性是id为'content'且class为'showtxt'的标签
    text = soup.find(id='content', class_='showtxt')
    # 获取到小说正文
    text = text.text
    # 下载该章节小说
    downlode(title,text,url)

# 下载小说
def downlode(title,text,url):
    with open('shengmu.txt', 'a+', encoding='utf-8') as f:
        f.write(title)
        f.write(text+'\n')
    print('{} 下载完成  链接地址为 {}'.format(title,url))

if __name__ == '__main__':
    headers = {
        'User-Agent': 'Mozilla/4.0(compatible;MSIE 5.5;Windows NT)', }
    url = 'http://www.biqukan.com/3_3039/'
    main(url)

运行代码,就会看到逐步在下载小说了


然后看一下我们保存小说的文件


然后就看到我们的数据了,有兴趣的可以把格式装换下,这样看起来就美观多了

版权声明:本文为Gscsd_T原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Gscsd_T/article/details/80787178