Python学习笔记,爬取笔趣阁小说

2021/7/20 12:05:52

本文主要是介绍Python学习笔记,爬取笔趣阁小说,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

代码来源:Python爬取笔趣阁小说,有趣又实用

学习了基础的语法,然后网上看到有人分享利用python爬取小说,自己拷贝了代码尝试了一下。

1. 环境准备 安装 BeautifulSoup4 和 lxml

& C:/Python39/python.exe -m pip install --user BeautifulSoup4
& C:/Python39/python.exe -m pip install --user lxml

2. 重命名了下载后的文件名便于排序也防止有非法的字符出现无法创建文件,加了1秒的间隔

import os
import requests
import time
from bs4 import BeautifulSoup 

# 声明请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36'
}

# 创建保存小说文本的文件夹
if not os.path.exists('./小说'):
    os.mkdir('./小说/')

path = 'http://www.biquw.com/book/416/'
# 访问网站并获取页面数据
response = requests.get(path)
response.encoding = response.apparent_encoding
# print(response.text)


'''
根据上图所示,数据是保存在a标签当中的。a的父标签为li,li的父标签为ul标签,ul标签之上为div标签。
所以如果想要获取整个页面的小说章节数据,那么需要先获取div标签。并且div标签中包含了class属性,
我们可以通过class属性获取指定的div标签,详情看代码~
'''
# lxml: html解析库 将html代码转成python对象,python可以对html代码进行控制
soup = BeautifulSoup(response.text, 'lxml')
book_list = soup.find('div', class_='book_list').find_all('a')
# soup对象获取批量数据后返回的是一个列表,我们可以对列表进行迭代提取
count = 1;
for book in book_list:
    book_name = book.text
    # 获取到列表数据之后,需要获取文章详情页的链接,链接在a标签的href属性中
    book_url = book['href']


    book_info_html = requests.get(path + book_url, headers=headers)
    book_info_html.encoding = book_info_html.apparent_encoding
    soup_part = BeautifulSoup(book_info_html.text, 'lxml') 

    info = soup_part.find('div', id='htmlContent')
    name = str(count)
    # print(info.text)
    with open('./小说/' + name.zfill(4) + '.txt', 'a', encoding='utf-8') as f:
      f.write(info.text)
    print('{} 下载完成!'.format(book_name))
    count += 1
    time.sleep(1)

 

 



这篇关于Python学习笔记,爬取笔趣阁小说的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程