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. 如何生成Android的keystore文件

    步骤   1 找到本机电脑上jdk安装的目录,使用cmd命令打开命令窗口,输入cd  jdk目录(替换成你的jdk的bin目录),进入到jdk的bin目录,接下来你才可以使用jdk的命令进行操作 步骤 ...

  2. RobotFramework:App滑动屏幕

    转自:http://blog.csdn.net/jgw2008/article/details/77993399 在使用Robot Framework测试Android机器过程中, 经常要用到滚屏操作 ...

  3. bzoj2839

    容斥原理+组合数学 看见这种恰有k个的题一般都是容斥原理,因为恰有的限制比较强,一般需要复杂度较高的方法枚举,而容斥就是转化为至少有k个,然后通过容斥原理解决 我们先选出k个元素作为交集,有C(n,k ...

  4. codeforces 126B

    Asterix, Obelix and their temporary buddies Suffix and Prefix has finally found the Harmony temple. ...

  5. Android应用开发基础篇(12)-----Socket通信(转载)

    转自:http://www.devdiv.com/android_socket_-blog-258060-10594.html 一.概述 网络通信无论在手机还是其他设备上都应用得非常广泛,因此掌握网络 ...

  6. 关于git本地已有项目

    终于要开始彻底掌握git了,第一步自然是自己建个test repository.然而,目前只学到git init, git clone啊.都没说怎么上传本地已有仓库,网上一搜吧,全是坑人的,标题还写的 ...

  7. Moctf--unset

    今天完成了一道Moctf的代码审计题目.这道题目也花了我一定时间去搞清楚他的逻辑,所以把所学所想记录在此,并分享给需要的朋友. 打开题目后直接放出源码---> 之后就是疯狂百度这些函数的意思并努 ...

  8. sql server编写一个语句脚本自动清空各表数据以初始化数据库

    问题:有时已有项目要移植,例如原来在广州地区使用的某系统,突然说惠州那边也要用这套一样的系统.或者,在demo环境下弄了一些测试数据.然后要清空全部表数据.如果表比较多的话,逐个表手工编写脚本就太麻烦 ...

  9. the little schemer 笔记(10.1)

    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 China Mainla ...

  10. the little schemer 笔记(0)

    the little schemer 笔记 Z.X.L 2012年08月13日 五项规则 car的规则car只对非空列表有定义. cdr的规则cdr只对非空列表有定义.任何非空列表的cdr是另外一个列 ...