Python爬取笔趣阁小说返回的网页内容中没有小说内容?
发布网友
发布时间:2022-04-24 18:27
我来回答
共6个回答
热心网友
时间:2022-05-10 17:33
思路:
一、分析网页,网址架构
二、码代码并测试
三、下载并用手机打开观察结果
一、分析网页,网址架构
先随便点击首页上的一篇小说,土豆的--元尊,发现在首页上面有如下一些信息: 作者,状态,最新章节,最后更新时间,简介,以及下面就是每一章的章节名,点击章节名就可以跳转到具体的章节。
然后我们按F12,进入开发者模式,在作者上面点击右键--“检查”,可以发现这些信息都是比较正常地显示。
再看章节名称,发现所有的章节都在<div id="list"> 下面的 dd 里面,整整齐齐地排列好了,看到这种情形,就像点个赞,爬起来舒服。
分析完首页,点击章节名称,跳转到具体内容,发现所有的正文都在 <div id="content"> 下面,巴适的很
那么现在思路就是,先进入小说首页,爬取小说相关信息,然后遍历章节,获取章节的链接,之后就是进入具体章节,下载小说内容。
OK,开始码代码。
二、码代码并测试
导入一些基本的模块:
import requests
from bs4 import BeautifulSoup
import random
2.先构建第一个函数,用于打开网页链接并获取内容。
使用的是requests 包的request.get ,获取内容之后用‘utf-8’ 进行转码。
这里我之前有个误区就是,以为所有的网站都是用 'utf-8' 进行转码的,但是实际上有些是用'gbk' 转码的,如果随便写,就会报错。
百度之后,只要在console 下面输入 ‘document.charset’ 就可以获取网站的编码方式。
热心网友
时间:2022-05-10 18:51
因为这里是动态加载的内容,而你用普通的方法爬取的网页只能爬渠道静态的内容。
所以你需要模仿真正的浏览器,而不是仅仅请求这个页面的内容。
详细内容可以在网上搜索以下,毕竟这里我也没法给你详细解说。
加油!
python 天下第一
热心网友
时间:2022-05-10 20:26
from urllib import request
import re
#构造请求信息,
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 \
(KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36'}
i = 2693152
j = 1
#2693854
while i <= 2693172:
print(f'正在下载第{j}章……')
url =f'http://www.yingsx.com/6_6366/{i}.html'
req = request.Request(url,headers=header)
html = request.urlopen(req).read().decode('utf-8')
pat1 =re.compile(r'<h1>(.*?)</h1>',re.I) #匹配章节
pat2 =re.compile(r'<div id="content">(.*?)<br />',re.I) #匹配正文开头
pat3 = re.compile(r' (.*?)<br />') #匹配正文中间的文字
pat4 = re.compile(r' (.*?)</div>') #匹配正文结尾
chapter = pat1.findall(html)
content_top = pat2.findall(html)
content_center = pat3.findall(html)
content_bottom = pat4.findall(html)
#把章节和内容,合并到一个列表
chapter = list(chapter[0] + '\n')
content_bottom = list(content_bottom[0] + '\n')
content = chapter + content_top +content_center +content_bottom
with open(f'E:/其他/飞升之后.txt','a') as f:
f.writelines(content)
i += 1
j += 1
print('已完成下载,请查收!')
热心网友
时间:2022-05-10 22:17
我试了一下,用iter_content方法直接保存到文件可以。
file = open('xiaoshuo.txt','wb')
for line in res.iter_content():
file.write(line)
file.close()
你用的是pycharm吧,pycharm要配置一下,你直接用cmd试试可不可以
热心网友
时间:2022-05-11 00:25
把网页下载本地,再从本地打开就能显示了
热心网友
时间:2022-05-11 02:50
我也是遇到了这个情况,你解决了嘛