小说爬虫网站源码分享,小说下载爬虫

其实小说爬虫网站源码分享的问题并不复杂,但是又很多的朋友都不太了解小说下载爬虫,因此呢,今天小编就来为大家分享小说爬虫网站源码分享的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

1功能及版本说明

功能:爬取小说目录和章节内容,并将章节内容下载到本地txt文件中。

版本:v1.1

增加代理IP,实现小说完整下载。

2开发环境

开发环境:Python3和PyCharm;

3网站介绍及分析

以免费小说全文阅读网站(http://www.quanwenyuedu.io/)为例,爬取该网站上面的小说。通过快捷键F12,可以调出当前网页的源码信息,分析相关源码。

首先看小说目录页面,通过点击蓝色边框内的箭头,再点击左侧页面中要了解的信息,在右侧就会出现相关的源码信息。

小说名称&34;对应的源码为:<h1>遮天</h1>;

小说作者&34;对应的源码为:<p>&34;<span>辰东</span></p>;

小说章节信息对应的源码为:<li><ahref=&34;>第1章星空中的青铜巨棺</a></li>;

下面看章节内容页面,发现小说具体章节内容在代码<divclass=&34;id=&34;>……</div>中。

4编码思路

1)提供小说目录页的url;

2)爬取目录页面信息;

3)提取目录页面中小说的名称、作者、具体章节的名称和网址信息;

4)根据提取到的章节网址(一般为相对路径网址),结合目录页网址进行分析,合成绝对路径的章节网址;

5)爬取小说章节网页内的正文内容,判断网站是否访问成功,若访问不成功则随机选取代理IP,继续访问;若访问成功,则将正文内容保存到本地txt文件中;

6)循环小说章节网址,依次爬取下载保存到本地。

5代码实现

代码分两个py文件,crawl_v1.1.py为爬取小说并下载的代码,proxy_ip.py为爬取代理IP的代码,具体如下:

完整代码如下:

crawl_v1.1.py

34;http://www.quanwenyuedu.io/n/zhetian/xiaoshuo.html&爬取url网址内容\ndefget_url(url,proxies):\nheaders={&34;:&34;,\n&34;:&34;,\n&34;:&34;,\n&34;:&34;,\n&34;:&34;,\n&34;:&34;}\nr=requests.get(url,headers=headers,proxies=proxies)\nwhiler.status_code!=200:\np=proxy_ip.get_random_ip()\nr=requests.get(url,headers=headers,proxies=p)\nreturnr\n\n34;html.parser&34;p&34;li&获取小说章节名称和网址\ni_url=i.a.get(&34;)\nchapter_url=url[:-13]+i_url\nchapter_name=i.text\n\n34;html.parser&34;p&将章节内容写入txt文件\nprint(chapter_name+&34;)\nforcincontent:\nwithopen(title+&34;+author+&34;,&34;,encoding=&34;)asf:\nf.write(c.text+&34;)\nprint(chapter_name+&34;)

proxy_ip.py

34;https://www.xicidaili.com/nn&34;User-Agent&34;Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/58.0.3029.110Safari/537.36SE2.XMetaSr1.0&34;Accept&34;text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8&34;Accept-Encoding&34;gzip,deflate,sdch&34;Accept-Language&34;zh-CN,zh;q=0.8&34;Cache-Control&34;max-age=0&34;Connection&34;keep-alive&34;html.parser&提取ip相关的标签\ntr=soup.find_all(&34;)\ntr=tr[1:]\nforiintr:\ntd=i.find_all(&34;)\ntd_2=td[1].text\ntd_3=td[2].text\ntd_6=td[5].text\nip=td_6+&34;+td_2+&34;+td_3\nip_list.append(ip)\n\ndefget_random_ip():\nip_random=random.choice(ip_list)\ni=ip_random.find(&34;)34;:&34;http&34;https&39;gbk&39;tencodecharacter&39;inposition7:illegalmultibytesequence

经查询分析,write()函数的默认编码不是utf-8,在write()中设置utf-8编码:write(&34;,&34;,encoding=&34;);

2)下载速度过慢;

3)代码运行,小说下载到990章时停住了,运行没有结束,也没有给出错误代码,只是不再继续运行下去了;

原因分析:怀疑是内存不足,或者写入函数write()内存限制。

7相关学习知识点

1)列表追加元素:list.append[];

2)随机选取列表中的元素:需要引入random库,调用random.choice()函数;

3)其他py文件中函数的调用:在要引入的文件中定义函数defget_random_ip();在本文件中importpy文件,并调用get_random_ip()函数;

4)While循环语句,判断网站访问是否成功;

8结束语

本次代码解决了反爬虫访问限制的问题,但下载速度很慢,且在进行到990章时代码运行停止了,没有给出错误原因,需要进一步优化。

将此次编码的过程及源码分享给大家,供大家参考。对于错误的地方,或有更好的建议,希望大家提出来,不胜感激!

文章分享结束,小说爬虫网站源码分享和小说下载爬虫的答案你都知道了吗?欢迎再次光临本站哦!

Published by

风君子

独自遨游何稽首 揭天掀地慰生平