Python爬取笔趣阁小说返回的网页内容中没有小说内容?

各位大神,我用python写了一个爬取笔趣阁小说的方法,查看网页源码可以看到小说内容,但是代码返回的html网页内容没有小说内容,除了小说内容其他都有,我看返回的html中应该是小说内容的地方出现了一个 <script>read2();</script>,请问是怎么回事

思路:
一、分析网页,网址架构
二、码代码并测试
三、下载并用手机打开观察结果
一、分析网页,网址架构
先随便点击首页上的一篇小说,土豆的--元尊,发现在首页上面有如下一些信息: 作者,状态,最新章节,最后更新时间,简介,以及下面就是每一章的章节名,点击章节名就可以跳转到具体的章节。
然后我们按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’ 就可以获取网站的编码方式。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-08-07

因为这里是动态加载的内容,而你用普通的方法爬取的网页只能爬渠道静态的内容。

所以你需要模仿真正的浏览器,而不是仅仅请求这个页面的内容。

详细内容可以在网上搜索以下,毕竟这里我也没法给你详细解说。

加油!

python 天下第一

本回答被提问者和网友采纳
第2个回答  2021-10-09
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('已完成下载,请查收!')
第3个回答  2019-08-17
我试了一下,用iter_content方法直接保存到文件可以。
file = open('xiaoshuo.txt','wb')
for line in res.iter_content():
file.write(line)
file.close()

你用的是pycharm吧,pycharm要配置一下,你直接用cmd试试可不可以
第4个回答  2020-06-18
把网页下载本地,再从本地打开就能显示了
相似回答