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书写的小说爬虫的更多相关文章

  1. python基础爬虫,翻译爬虫,小说爬虫

    基础爬虫: # -*- coding: utf-8 -*- import requests url = 'https://www.baidu.com' # 注释1 headers = { # 注释2 ...

  2. 使用scrapy制作的小说爬虫

    使用scrapy制作的小说爬虫 爬虫配套的django网站  https://www.zybuluo.com/xuemy268/note/63660 首先是安装scrapy,在Windows下的安装比 ...

  3. Node.js 实现简单小说爬虫

    最近因为剧荒,老大追了爱奇艺的一部网剧,由丁墨的同名小说<美人为馅>改编,目前已经放出两季,虽然整部剧槽点满满,但是老大看得不亦乐乎,并且在看完第二季之后跟我要小说资源,直接要奔原著去看结 ...

  4. [Python学习] 简单网络爬虫抓取博客文章及思想介绍

            前面一直强调Python运用到网络爬虫方面很有效,这篇文章也是结合学习的Python视频知识及我研究生数据挖掘方向的知识.从而简介下Python是怎样爬去网络数据的,文章知识很easy ...

  5. Python 利用Python编写简单网络爬虫实例3

    利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站“http://bbs.51testing. ...

  6. 孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9并使用pydocx模块将结果写入word文档

    孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天终于完成了对docx模块针对 ...

  7. 孤荷凌寒自学python第七十八天开始写Python的第一个爬虫8

    孤荷凌寒自学python第七十八天开始写Python的第一个爬虫8 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天止基本完成了对docx模块针 ...

  8. 孤荷凌寒自学python第七十七天开始写Python的第一个爬虫7

    孤荷凌寒自学python第七十七天开始写Python的第一个爬虫7 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 今天的学习仍然是在纯粹对docx模 ...

  9. 孤荷凌寒自学python第七十六天开始写Python的第一个爬虫6

    孤荷凌寒自学python第七十六天开始写Python的第一个爬虫6 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 不过由于对python-docx模 ...

随机推荐

  1. AFNetworking 2.0教程

    在iOS 7中,Apple更新了iOS中的网络基础架构,新推出的网络基础架构是NSURLSession(原来的网络基础架构NSURLConnection). iOS开发中往往会涉及网络数据处理,像其他 ...

  2. Python-Django使用MemcachedCache缓存

    最近工作中使用到缓存,简单记录之... 关于django的几种缓存方式,就不在做介绍了,网上一搜一大把:1.8.2官方文档, Django 缓存,Python菜鸟之路:django缓存 学习了之后,选 ...

  3. CClientDC类 CWindowDC类

    CClientDC类 CClientDC类也是CDC类的派生类.它只能在窗口的客户区(即窗口中除了边框.标题栏.菜单栏以及状态栏外的中间部分)中进行绘图,坐标点(0,0)通常指的是客户区的左上角.它的 ...

  4. 在Entity Framework 中实现继承关系映射到数据库表

    继承关系映射到数据库表中有多种方式: 第一种:TPH(table-per-hiaerachy) 每一层次一张表 (只有一张表) 仅使用名为父类的类型名的一张表,它包含了各个子类的所有属性信息,使用区分 ...

  5. django基础知识

    一.django的安装 1. pip3 install django 2. 把安装路径加到环境变量里以便以后启动admin相关命令,在windows系统中---我的电脑---属性----高级系统设置- ...

  6. MySQL的分支

    1.MariaDB MariaDB数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MyS ...

  7. Linux下rpm、yum和源码三种安装方式详细介绍

    第1章 源码安装 源码包安装会比RPM包安装慢,是因为RPM的软件包是根据特定系统和平台而指定的,经常一种 程序会提供很多RPM包的格式,用户根据系统情况选择适合的RPM包直接安装,而源码包相当于 通 ...

  8. AtCoder Beginner Contest 057 ABCD题

    A - Remaining Time Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Dol ...

  9. jmeter(十八)属性和变量

    一.Jmeter中的属性: 1.JMeter属性统一定义在jmeter.properties文件中,我们可以在该文件中添加自定义的属性 2.JMeter属性在测试脚本的任何地方都是可见的(全局),通常 ...

  10. CentOS 6.9:ntpdate[3115]: no server suitable for synchronization found

    在做一个集群实验,克隆的虚拟机,然后使用ntpdate就抛出了错误.机器之间可以互相ping通,selinux和iptables都已经关闭. [root@Server_2 ~]# service nt ...