网页小说抓取 ios(《黑客》一本网络小说章节爬下来,一本小说就爬下来啦)

优采云 发布时间: 2021-11-07 20:17

  网页小说抓取 ios(《黑客》一本网络小说章节爬下来,一本小说就爬下来啦)

  很多时候我想看小说,但是在网上找不到资源。即使我找到了资源,他们也不提供下载。当然,下载小说在手机上阅读也是很爽的!

  于是程序员的想法就出来了。如果下载不下来,我就用爬虫把章节爬下来存到txt文件里。这样,一部小说就会被爬下来。

  这次爬到的书是《黑客》,一本网络小说,相信很多人都看过,看看他的代码。

  代码如下:

  import re

import urllib.request

import time

#

root = 'http://www.biquge.com.tw/3_3542/'

# 伪造浏览器

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) ' \

'AppleWebKit/537.36 (KHTML, like Gecko)'

' Chrome/62.0.3202.62 Safari/537.36'}

req = urllib.request.Request(url=root, headers=headers)

with urllib.request.urlopen(req, timeout=1) as response:

# 大部分的涉及小说的网页都有charset='gbk',所以使用gbk编码

htmls = response.read().decode('gbk')

# 匹配所有目录HK002 上天给了一个做好人的机会

dir_req = re.compile(r'<a href="/3_3542/(\d+?.html)">')

dirs = dir_req.findall(htmls)

# 创建文件流,将各个章节读入内存

with open('黑客.txt', 'w') as f:

for dir in dirs:

# 组合链接地址,即各个章节的地址

url = root + dir

# 有的时候访问某个网页会一直得不到响应,程序就会卡到那里,我让他0.6秒后自动超时而抛出异常

while True:

try:

request = urllib.request.Request(url=url, headers=headers)

with urllib.request.urlopen(request, timeout=0.6) as response:

html = response.read().decode('gbk')

break

except:

# 对于抓取到的异常,我让程序停止1.1秒,再循环重新访问这个链接,一旦访问成功,退出循环

time.sleep(1.1)

# 匹配文章标题

title_req = re.compile(r'(.+?)')

# 匹配文章内容,内容中有换行,所以使flags=re.S

content_req = re.compile(r'(.+?)',re.S,)

# 拿到标题

title = title_req.findall(html)[0]

# 拿到内容

content_test = content_req.findall(html)[0]

# 对内容中的html元素杂质进行替换

strc = content_test.replace(' ', ' ')

content = strc.replace('<br />', '\n')

print('抓取章节>' + title)

f.write(title + '\n')

f.write(content + '\n\n')

  这样,小说就下载好了!!!

  运行情况如图:

  

  有时服务器会因为访问量大而屏蔽你的IP,认为你是机器人。您可以添加一个随机数在不同的时间随机停止程序。

  如果下载太慢,可以多线程一起下载多个章节

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线