325715605
0338-840824436
导航

python爬虫——40行代码爬取「笔趣看」全部小说

发布日期:2022-08-19 10:24

本文摘要:需求分析”笔趣看“ 是一个盗版小说网站,这里有各大知名小说网站的小说,更新速度略慢于正版网站。可是该网站只支持在线浏览,不支持小说下载,对于想要下载下来以防断网或者网速欠好时也能看的童鞋来说不太友好。因此,本次训练将爬取该网站所有小说。 PS:本次训练仅为学习交流,请列位童鞋支持正版。爬取目的本次训练将爬取 “笔趣看” 你想要的任何小说。

博亚体育app官网下载入口

需求分析”笔趣看“ 是一个盗版小说网站,这里有各大知名小说网站的小说,更新速度略慢于正版网站。可是该网站只支持在线浏览,不支持小说下载,对于想要下载下来以防断网或者网速欠好时也能看的童鞋来说不太友好。因此,本次训练将爬取该网站所有小说。

PS:本次训练仅为学习交流,请列位童鞋支持正版。爬取目的本次训练将爬取 “笔趣看” 你想要的任何小说。准备事情本次训练将使用 requests 库(python使用最多的库)作者 kennethreitz 今年最新力作 request_html 库。

集网页抓取与剖析于一体。想相识更多的可以关注我,我将准备将相关文档翻译并与现有库举行对比。请确保电脑安装了 python3.6 和requests_html。(详细安装方法请自行百度)爬取分析我们先随便找一本小说的第一章内容举行分析。

第一章内容用代码获取全部文本信息:from requests_html import HTMLSessionurl = 'http://www.biqukan.com/53_53276/20760231.html'session = HTMLSession()res = session.get(url)content = res.html.textprint(content)打印内容如下:网页内容可以看到我们很轻松就获取到所有文本信息。可是有许多信息是我们不需要的,所以我们需要更准确的定位,获取指定信息。通过谷歌浏览器的开发者工具(按F12)可以发现小说正文全在<div id="content" class="showtxt"> 标签下的文本信息中。

因此我们可以通过res.html.find('#content')来定位(定位方法与 jQuery 选择器一致,对 jQuery 不太熟悉的朋侪可以通过‘菜鸟教程’大致相识下),这里我们选择的是通过 id 定位,固然也可以通过 class 定位(res.html.find('.showtxt')),可是 html 中 id 是唯一的,class 纷歧定是唯一的,有时会造成定位禁绝。有 id 建议用 id。革新后的代码如下:from requests_html import HTMLSessionurl = 'http://www.biqukan.com/53_53276/20760231.html'session = HTMLSession()res = session.get(url)targets = res.html.find('#content')content = targets[0].textprint(content)打印效果为:革新后的效果可以看到我们获取的全是小说正文内容。

下面让我们回到该小说主页。小说主页可以看到前面12章全是最新章节,不是我们需要的,后面的正问卷才是所有章节信息。下面我们来分析该页面信息:章节信息我们发现所有章节信息在<div class>下的自界说列表<dl><dd>中。

接下来我们来获取章节名和每章的链接。from requests_html import HTMLSessionfirst_url = 'http://www.biqukan.com'target_url = 'http://www.biqukan.com/53_53276/'session = HTMLSession()res = session.get(target_url)targets = res.html.find('.listmain dd')titles = []hrefs = []for i in range(12, len(targets)): titles.append(targets[i].text) hrefs.extend(list(targets[i].links))print(titles)print(hrefs)打印效果为:章节信息可以看到我们获取的章节所有信息。我们可以将上节代码中的 first_url 和 hrefs 中的每个元素举行拼接就能获得每章的正文网址。

完整代码# -*- coding:UTF-8 -*-from requests_html import HTMLSessiondef parse_html(res): targets = res.html.find('.listmain dd') titles = [] hrefs = [] for i in range(12, len(targets)): titles.append(targets[i].text) hrefs.extend(list(targets[i].links)) return titles, hrefsdef get_onepage(first_url, title, href, session, book_name): url = first_url + href res = session.get(url=url) targets = res.html.find('#content') content = targets[0].text with open(book_name + '.txt', 'a', encoding='utf-8') as f: f.write('n' + title + 'n') f.write(content)def main(): first_url = 'http://www.biqukan.com' session = HTMLSession() targets_url = input('请输入你要下载的小说地址:') res = session.get(url=targets_url) book_name = res.html.find('.info h2')[0].text titles, hrefs = parse_html(res) for i in range(len(titles)): get_onepage(first_url, titles[i], hrefs[i], session, book_name)if __name__ == '__main__': main()注意:上述代码在 pycharm 上运行时,当你将网址复制到下面提示框按回车键时会直接跳到对应网页。解决措施有两个:1:直接在下令行运行2:将url = input('请输入要下载的文库URL地址_')改成url = input('请输入要下载的文库URL地址_'[:-1],在复制的网址后面加一个 叹息号,eg:http://www.biqukan.com/53_53276/!总结本次训练我们是先获取一章的信息,然后获取所有章节信息,进而获取所有信息。

注意:本次训练仅为学习交流,请大家支持正版,究竟大家写小说不容易,不是每小我私家都能成为大神,大家都要用饭,你的一个订阅,一次购置就是支持他们前进的动力。如果以为我的文章对您有所资助的可以点个关注。

最近我的文章可以使用赞赏了,有钱的土豪可以赞赏支持一下,究竟写作不易,尤其是原创。福利想学习 python 以及其他编程语言的的可以关注我私信回复【python】获取 500G 学习资料。


本文关键词:博亚体育app官网下载入口,python,爬虫,—,40行,代码,爬取,「,笔趣,看,」

本文来源:博亚体育app官网下载入口-www.7710mall.com