鱼C论坛

 找回密码
 立即注册
查看: 2035|回复: 3

[作品展示] request+bs4+lxml思路 小说爬取. 每一步都有注释. 适合新手学习

[复制链接]
发表于 2020-7-15 16:00:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 johnnyb 于 2020-7-15 16:23 编辑

理论上,只要替换url 和 写入的txt文件名. 即可爬其他任何小说. 具体没测试.
import requests
from bs4 import BeautifulSoup
import os


headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'
}
url = 'http://www.shicimingju.com/book/sanguoyanyi.html'

html_text = requests.get(url=url, headers=headers).text  # 获取目录
soup = BeautifulSoup(html_text, 'lxml')  # lxml解析
li_list = soup.select('.book-mulu > ul > li')  # 选择标签
if not os.path.exists('./三国演义'):  # 创建文件夹
    os.mkdir('./三国演义')
f = open('./三国演义/sanguo.txt', 'w', encoding='utf-8')  # 创建文件
for li in li_list:  # 遍历所有的li标签.里面包含有连接和标题
    title = li.a.string  # 该章节标题
    info_url = 'http://www.shicimingju.com'+li.a['href']  # 取到该章节的连接,并进行完善
    info_text = requests.get(info_url, headers=headers).text  # 有了连接,就可以请求对应章节的text
    info_soup = BeautifulSoup(info_text, 'lxml')  # 还是lxml解析
    div_tag = info_soup.find('div', class_='chapter_content')  # 定位内容部分标签.
    data_text = div_tag.get_text()  # 获取正文部分
    f.write(title+data_text+'\n')  # 写入标题加对应正文.换行符隔开
    print(title,'爬取写入完成.')

print('Over All')
结果预览画面!  请多指教.
微信截图_20200715155913.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-7-15 16:19:51 | 显示全部楼层

为何么说呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-15 17:38:21 | 显示全部楼层
本帖最后由 liuzhengyuan 于 2020-7-15 17:40 编辑


不好意思,我看错了……(怪我眼瞎,没看到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-16 14:49:38 | 显示全部楼层
liuzhengyuan 发表于 2020-7-15 17:38
不好意思,我看错了……(怪我眼瞎,没看到 )

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-19 23:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表