使用python书写的小说爬虫
1.写了一个简单的网络爬虫
初期1 (后期将会继续完善)
#小说的爬取 import requests
import random
from bs4 import BeautifulSoup baseurl = "https://www.biqukan.com"; header = [{'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36'},{'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50'},{'User-Agent':'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)'},{'User-Agent':'Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1'},{'User-Agent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)'}]
# header 是用来伪装成浏览器发送请求,一般加上最好,header 信息可以通过浏览器查看,也可在网上搜索得到。
req = requests.get(baseurl + '/s.php?ie=gbk&s=2758772450457967865&q=一念永恒',headers = header[random.randint(0,4)]) # 向目标网站发送 get 请求
result = req.content
result = result.decode('gbk') # 查看网页源代码 看到 charset=gbk,即网页是用的 gbk 编码,故要用 gkb 的编码方式来解码,否则中文就会乱码。 # print(result); #得到内容
req_parser = BeautifulSoup(result,"html.parser");
bookbox = req_parser.find_all('div',class_ ='bookbox');
# a_bf = BeautifulSoup(str(div),"html.parser"); # 进行进一步的字符解析因为获取要素类型的值时必须进行这一步 # 对当前的结果进行遍历得到想要的数据
for result in bookbox:
resu = BeautifulSoup(str(result),"html.parser");
book_image = resu.find_all('img')[0].get('src'); # 得到书名的图片
book_name = resu.h4.a.string; # 得到书的名称
book_author = resu.find('div',class_ = 'author').string; #得到书的作者
book_href = resu.h4.a.get('href'); # 得到书的链接
book_update_name = resu.find('div',class_ = 'update').a.string; # 最新章节名称
book_update_name_href = resu.find('div',class_ = 'update').a.get('href'); # z最新章节链接
2. 初期2 (后期将完善具体的章节内容,当前是一个书的搜索列表) **如果当前文件夹下面没有book.txt 文件就会自动创建,如果有会进行覆盖)
#小说的爬取 爬取的是书名的所有列表 根据书名或者作者进行搜索的列表 import requests
import random
from bs4 import BeautifulSoup # 定义一个存储书的列表 book_list = []; # 定义一个对象存储内容
class Book:
book_image = '';
book_name = '';
book_author = '';
book_href = '';
book_update_name = '';
book_update_name_href = ''; def tostring(self):
return """
图片地址=%s
书名=%s
书作者=%s
书链接=%s
最新章节名称=%s
最新章节地址=%s""" %(self.book_image,self.book_name,self.book_author,self.book_href,self.book_update_name,self.book_update_name_href); baseurl = "https://www.biqukan.com"; input_book_name = input("请输入书名称==>"); header = [{'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36'},{'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50'},{'User-Agent':'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)'},{'User-Agent':'Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1'},{'User-Agent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)'}]
# header 是用来伪装成浏览器发送请求,一般加上最好,header 信息可以通过浏览器查看,也可在网上搜索得到。
req = requests.get(baseurl + '/s.php?ie=gbk&s=2758772450457967865&q=' + input_book_name,headers = header[random.randint(0,4)]) # 向目标网站发送 get 请求
result = req.content
result = result.decode('gbk') # 查看网页源代码 看到 charset=gbk,即网页是用的 gbk 编码,故要用 gkb 的编码方式来解码,否则中文就会乱码。 # print(result); #得到内容
req_parser = BeautifulSoup(result,"html.parser");
bookbox = req_parser.find_all('div',class_ ='bookbox');
# a_bf = BeautifulSoup(str(div),"html.parser"); # 进行进一步的字符解析因为获取要素类型的值时必须进行这一步 # 对当前的结果进行遍历得到想要的数据
for result in bookbox:
resu = BeautifulSoup(str(result),"html.parser");
book_image = resu.find_all('img')[0].get('src'); # 得到书名的图片
book_name = resu.h4.a.string; # 得到书的名称
book_author = resu.find('div',class_ = 'author').string; #得到书的作者
book_href = resu.h4.a.get('href'); # 得到书的链接
book_update_name = resu.find('div',class_ = 'update').a.string; # 最新章节名称
book_update_name_href = resu.find('div',class_ = 'update').a.get('href'); # z最新章节链接
book = Book();
book.book_image = baseurl + book_image;
book.book_name = book_name;
book.book_author = book_author;
book.book_href = baseurl + book_href;
book.book_update_name = book_update_name;
book.book_update_name_href = baseurl + book_update_name_href;
book_list.append(book); with open('./book.txt','w+') as fw: # 打开文件
for i in book_list:
fw.write("\n")
fw.write("***********************************************************************************************")
fw.write("\n")
fw.write(i.tostring())
使用python书写的小说爬虫的更多相关文章
- python基础爬虫,翻译爬虫,小说爬虫
基础爬虫: # -*- coding: utf-8 -*- import requests url = 'https://www.baidu.com' # 注释1 headers = { # 注释2 ...
- 使用scrapy制作的小说爬虫
使用scrapy制作的小说爬虫 爬虫配套的django网站 https://www.zybuluo.com/xuemy268/note/63660 首先是安装scrapy,在Windows下的安装比 ...
- Node.js 实现简单小说爬虫
最近因为剧荒,老大追了爱奇艺的一部网剧,由丁墨的同名小说<美人为馅>改编,目前已经放出两季,虽然整部剧槽点满满,但是老大看得不亦乐乎,并且在看完第二季之后跟我要小说资源,直接要奔原著去看结 ...
- [Python学习] 简单网络爬虫抓取博客文章及思想介绍
前面一直强调Python运用到网络爬虫方面很有效,这篇文章也是结合学习的Python视频知识及我研究生数据挖掘方向的知识.从而简介下Python是怎样爬去网络数据的,文章知识很easy ...
- Python 利用Python编写简单网络爬虫实例3
利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站“http://bbs.51testing. ...
- 孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9并使用pydocx模块将结果写入word文档
孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天终于完成了对docx模块针对 ...
- 孤荷凌寒自学python第七十八天开始写Python的第一个爬虫8
孤荷凌寒自学python第七十八天开始写Python的第一个爬虫8 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天止基本完成了对docx模块针 ...
- 孤荷凌寒自学python第七十七天开始写Python的第一个爬虫7
孤荷凌寒自学python第七十七天开始写Python的第一个爬虫7 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 今天的学习仍然是在纯粹对docx模 ...
- 孤荷凌寒自学python第七十六天开始写Python的第一个爬虫6
孤荷凌寒自学python第七十六天开始写Python的第一个爬虫6 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 不过由于对python-docx模 ...
随机推荐
- TypeError: can't convert CUDA tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.
报错原因:numpy不能读取CUDA tensor 需要将它转化为 CPU tensor. 所以如果想把CUDA tensor格式的数据改成numpy时,需要先将其转换成cpu float-tenso ...
- linux设备驱动第三篇:如何实现一个简单的字符设备驱动
在linux设备驱动第一篇:设备驱动程序简介中简单介绍了字符驱动,本篇简单介绍如何写一个简单的字符设备驱动.本篇借鉴LDD中的源码,实现一个与硬件设备无关的字符设备驱动,仅仅操作从内核中分配的一些内存 ...
- uploadify提示修改为中文
使用uploadify时报错时是英文提示,并且上传文件进度条显示的是英文,如何修改为中文呢,直接打开jquery.uploadify.min.js(如果你使用的是jquery.uploadify.js ...
- Integrate Your Code with the Frameworks---整合你的代码和框架
Back to Frameworks Integrate Your Code with the Frameworks When you develop an app for OS X or iOS, ...
- mysql5.7根据.frm和.ibd文件恢复表结构和数据
一.恢复表结构 1.环境:Windows .mysql5.7:首先创建一个数据库,可以通过navicat来创建: 2.使用当前创建的数据库:use ww; 3.随意创建一张表,但是这张表的名字 ...
- 实现node端渲染图表的简单方案
实现node端渲染图表的简单方案 这个题目有点小,本篇博客真正谈论的应该是服务端生成图表的简单方案,这里面有两个关键字:服务端 & 简单,我们知道基于js有很多的图表库,知名的如D3.echa ...
- E20170417-sl
recursive adj.递归的 strategy n.战略
- IT兄弟连 JavaWeb教程 请求转发案例
CheckServlet类与OutputServlet类之间为请求转发关系.在web.xml文件中,为CheckServlet映射的URL为"/check",为OutputServ ...
- 修改 jq weui cityPicker.js原来的值
1.对接后台接口,拿到返回来的值,注意数据格式要一样 var raw; $.ajax({ type: "GET", url: "/web/region/list.json ...
- 自定义层or网络
目录 Outline keras.Sequential Layer/Model MyDense MyModel Outline keras.Sequential keras.layers.Layer ...