python写出代码输入I:https://www.doupoxs.com/doupocangqiong/ Ø输出O:爬取每章内容和标题,并以标题命名,存储到novel文件夹中 Ø使用的python库:urllib、re Ø爬虫关键要素:url确定、设置请求头、获取与解析响应Ø输入I:https://www.doupoxs.com/doupocangqiong/ Ø输出O:爬取每章内容和标题,并以标题命名,存储到novel文件夹中 Ø使用的python库:urllib、re Ø爬虫关键要素:url确定、设置请求头、获取与解析响应
时间: 2024-01-06 18:04:16 浏览: 149
好的,以下是代码实现:
```python
import urllib.request
import re
import os
# 设置请求头部信息,伪装成浏览器访问网站
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
# 目标小说主页URL
target_url = 'https://www.doupoxs.com/doupocangqiong/'
# 模拟浏览器访问获取网页HTML代码
req = urllib.request.Request(url=target_url, headers=headers)
res = urllib.request.urlopen(req)
html = res.read().decode('utf-8')
# 获取小说名称
novel_name = re.findall(r'<h1>(.*?)</h1>', html)[0]
print("小说名称:" + novel_name)
# 创建小说保存的文件夹
if not os.path.exists(novel_name):
os.makedirs(novel_name)
# 获取每个章节的URL和标题
chapter_info = re.findall(r'<li><a href="(.*?)">(.*?)</a></li>', html)
# 遍历每个章节,获取章节内容并保存到本地文件
for chapter in chapter_info:
chapter_url = target_url + chapter[0] # 章节URL
chapter_title = chapter[1] # 章节名称
# 模拟浏览器访问获取章节的HTML代码
chapter_req = urllib.request.Request(url=chapter_url, headers=headers)
chapter_res = urllib.request.urlopen(chapter_req)
chapter_html = chapter_res.read().decode('utf-8')
# 获取章节正文(过滤掉无用标签)
chapter_content = re.findall(r'<div id="content">(.*?)</div>', chapter_html, re.S)[0]
chapter_content = chapter_content.replace(' ', '') # 替换空格
chapter_content = chapter_content.replace('<br/>', '') # 替换换行符
# 将章节内容写入文件
with open(os.path.join(novel_name, chapter_title + '.txt'), 'w', encoding='utf-8') as f:
f.write(chapter_content)
print('已下载:' + chapter_title)
print('下载完成!')
```
这段代码实现了爬取斗破苍穹小说每个章节的内容和标题,并以标题命名,保存到novel文件夹中。
阅读全文