通过python爬取笔趣阁小说,获取图片保存本地,数据保存mysql
通过python爬取小说图片、小说名称、作者、章节、内容。直接上代码
import requests
import time
from bs4 import BeautifulSoup
from queue import Queue
import threading
import pymysql
from DBUtils.PooledDB import PooledDBproxy='124.243.226.18:8888'#如果代理需要验证,只需要在前面加上用户名密码,如下所示# proxy='username:password@124.243.226.18:8888'
proxies={'http':'http://119.140.186.17:894','http':'http://27.24.20.22:766','http':'http://114.98.189.158:766','http':'http://114.101.246.185:23564'
}pool = PooledDB(creator=pymysql,maxconnections=0, # 连接池允许的最大连接数,0和None表示不限制连接数mincached=10, # 初始化时,链接池中至少创建的空闲的链接,0表示不创建maxcached=0, # 链接池中最多闲置的链接,0和None不限制blocking=True, # 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错host='47.106.122.177', # 数据库ip地址port=3306,user='root',passwd='123456',db='zskxt',use_unicode=True,charset='utf8')send_headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36","Connection": "keep-alive","Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8","Accept-Language": "zh-CN,zh;q=0.8"
} # 伪装成浏览器#获取小说URL列表
def huoquxiaoshuo():search_real_url = 'http://www.xbiquge.la/xiaoshuodaquan/'try:html = requests.get(search_real_url).texthtmlTree = BeautifulSoup(html, 'html.parser')url_list=htmlTree.find(id='main').find_all('a')print(url_list[0]);urlreutrn = []for url in url_list:urlreutrn.append(url.attrs['href'])return urlreutrnexcept Exception as e:print(e)class Producer(threading.Thread):def __init__(self, url_queue , *args, **kwargs):super(Producer, self).__init__(*args, **kwargs)self.url_queue = url_queuedef run(self):# 获取小说目录try:while True:if self.url_queue.empty():breakurl=self.url_queue.get()while True:try:text = requests.get(url,send_headers)except Exception as e:print(e)continuetext.encoding = 'utf-8'novel_source=text.texthtmlTree = BeautifulSoup(novel_source, 'html.parser')print(htmlTree.title);if str(htmlTree.title).find('503')==-1:breakelse :time.sleep(1)img = htmlTree.find(id='fmimg').find_all('img')#print(img)#保存图片while True:try:response = requests.get(img[0].get('src'),send_headers)except Exception as e:print(e)continue# 获取的文本实际上是图片的二进制文本imgxr = response.contentif len(imgxr) <300:time.sleep(1)else :break# 将他拷贝到本地文件 w 写 b 二进制 wb代表写入二进制文本imgxrlist=[]imgxrlist=img[0].get('src').split("/")bookmsimg=imgxrlist[len(imgxrlist) - 1]with open('d:\\img\\'+bookmsimg, 'wb') as f:f.write(imgxr)id=url.split("/")bookid=id[len(id) - 2]bookname=htmlTree.find(id='info').find('h1').stringbookzz = htmlTree.find(id='info').find_all('p')[0].string.replace('作 者:','')bookms = htmlTree.find(id='intro').find_all('p')[1].stringbookms=bookms.replace("'","\'")sql="insert into zsk_book_sm (bookid,bookname,zz,zhgxsj,msnr,tp) values ('xbqg"+bookid+"','"+bookname+"','"+bookzz+"',now(),'"+bookms+"','"+bookmsimg+"')"db = pool.connection() # 连接数据池cursor = db.cursor() # 获取游标try:cursor.execute(sql)db.commit()except Exception as e:print("SQL ERROR!", e)db.rollback()#finally:#cursor.close()#db.close()bookzjlisturl=[]bookzjlist=htmlTree.find(id='list').find_all('a')for url in bookzjlist:urlzj=str(url.get('href'))zjid=urlzj.split("/")[3].replace(".html", "")#获取章节内容while True:try:time.sleep(1)#nrtext = requests.get('http://www.xbiquge.la/2/2210/1744317.html', send_headers)nrtext = requests.get('http://www.xbiquge.la'+urlzj, send_headers)#nrtext = requests.get('http://www.xbiquge.la' + urlzj, send_headers, proxies=proxies)except Exception as e:print(e)continuenrtext.encoding = 'utf-8'nrnovel_source = nrtext.textnrhtmlTree = BeautifulSoup(nrnovel_source, 'html.parser')print(nrhtmlTree.title);if str(nrhtmlTree.title).find('503') == -1:breakelse:time.sleep(1)content=nrhtmlTree.find(id='content')#if str(content).index("</p>")!=-1:# nrhtmlTree.find('p').decompose()a=str(content).replace("<div id=\"content\">","").replace("</div>","")a=a.replace("'","")nrsql = "INSERT INTO `zsk_book_content` (`id`, `content`) VALUES ('" +zjid + "', '" + a + "')"zjsql ="INSERT INTO zsk_book_ml (mlid, zjmc, bookid, content_id, is_delete, words) VALUES ('"+ zjid + "', '" + url.text + "', '" +bookid+ "', '" + urlzj.split("/")[3].replace(".html", "") + "', 0, 1)";try:cursor.execute(zjsql)cursor.execute(nrsql)db.commit()except Exception as e:print("SQL ERROR!", e)db.rollback()#finally:#cursor.close()#db.close()except Exception as e:print(e)if __name__ == '__main__':url_list=huoquxiaoshuo();print(url_list[0]);url_queue = Queue(len(url_list))for url in url_list:url_queue.put(url)for x in range(3):t = Producer(url_queue)t.start()# book_name = input('请输入你要下载的小说名字(确保输入的小说名字正确):')# novel_url, novel_name = download(book_name)# chapter_list = get_chapter(novel_url)# get_content(chapter_list, novel_name)
数据库结构如下
Target Server Type : MYSQL
Target Server Version : 50562
File Encoding : 65001Date: 2020-03-28 12:32:08
*/SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `zsk_book_content`
-- ----------------------------
DROP TABLE IF EXISTS `zsk_book_content`;
CREATE TABLE `zsk_book_content` (
`id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '内容id' ,
`content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '章节内容' ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci;-- ----------------------------
-- Table structure for `zsk_book_ml`
-- ----------------------------
DROP TABLE IF EXISTS `zsk_book_ml`;
CREATE TABLE `zsk_book_ml` (
`mlid` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '目录id' ,
`zjmc` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '目录章节名称' ,
`bookid` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '书id' ,
`content_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文章内容id' ,
`is_delete` int(11) NULL DEFAULT NULL COMMENT '删除标识' ,
`words` int(11) NULL DEFAULT NULL COMMENT '字数' ,
`ctime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间' ,
`mtime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '修改时间' ,
PRIMARY KEY (`mlid`, `bookid`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci;-- ----------------------------
-- Table structure for `zsk_book_sm`
-- ----------------------------
DROP TABLE IF EXISTS `zsk_book_sm`;
CREATE TABLE `zsk_book_sm` (
`bookid` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '书id' ,
`bookname` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '书名' ,
`zz` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '作者' ,
`zhgxsj` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间' ,
`tp` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '封面' ,
`zxzj` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '最新章节' ,
`zxzjid` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '最新章节id' ,
`msnr` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '描述内容' ,
`lb` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '类别' ,
PRIMARY KEY (`bookid`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci;
通过python爬取笔趣阁小说,获取图片保存本地,数据保存mysql相关推荐
- python爬取笔趣阁小说(附源码)
python爬取笔趣阁小说 文章目录 python爬取笔趣阁小说 前言 一.获取小说目录结构 获取目录连接 请求代码 解析目录 XPath tqdm 解析 二.获取小说章节结构 请求代码 解析章节 代 ...
- python爬取小说爬取_用python爬取笔趣阁小说
原标题:用python爬取笔趣阁小说 首先打开笔趣阁网址,链接,搜索自己想要的小说. 在网站内单击右键,点击检查,会出现如下界面! 我们需要的章节信息就在我划的这块, 可以将每个标签点一下,它对应的内 ...
- 1.python爬取笔趣阁小说
前一阵无聊想学习python,就有了以下代码,选取了笔趣阁这个大众化的网站,百度发现以笔趣阁为名的小说网站很多,本段代码只在百度结果里选取前五条,并选取了三个叫笔趣阁的网站,前五条里包含笔趣阁的任意一 ...
- Python爬取笔趣阁小说,有趣又实用!
上班想摸鱼?为了摸鱼方便,今天自己写了个爬取笔阁小说的程序.好吧,其实就是找个目的学习python,分享一下. 1. 首先导入相关的模块 import os import requests from ...
- 用python爬取笔趣阁小说并分章节保存到本地
在宿舍无聊时想做点小程序,刚好又看到笔趣阁的广告,就想着爬一下小说看看,通过网上的爬取教程整理的 使用beautifulsoup解析request获取的HTML http://beautifulsou ...
- Python爬取笔趣阁小说2.0版
之前的爬虫文章中,我们只可以爬取某本特定的小说,小波大叔一般喜欢看玄幻和修真类的,那么想把这一类小说全部爬下来该怎么操作呢,2.0版本来了,依然还是笔趣阁网站,初学者而言,这个没有反扒机制,比较方便. ...
- BeautifulSoup爬取笔趣阁小说并下载到本地
首先打开笔趣阁网址随便选一篇小说 先请求网址拿到网页的数据代码如下: def __init__(self):#http://www.biquyun.com/14_14055/9195936.html# ...
- 1-4 python爬取笔趣阁小说(附带完整代码)
笔趣看是一个盗版小说网站,这里有很多起点中文网的小说,该网站小说的更新速度稍滞后于起点中文网正版小说的更新速度.并且该网站只支持在线浏览,不支持小说打包下载.所以可以通过python爬取文本信息保存, ...
- python爬取笔趣阁小说的代码微小调整修改
原文来自: https://blog.csdn.net/u012717715/article/details/92811743 本人说明:其实严格地这不是转载,实际上更应该算是原创!原文代码不能正常 ...
最新文章
- mysql declare 赋值_sql server和mysql变量赋值的区别 以及 MySql Declare(转)
- 27年前被Nature拒稿,如今斩获诺贝尔奖!学术投稿模式再引热议:都有神奇的评审2...
- 用c语言做教学课程安排,C语言入门课程安排
- php 堵塞 消息队列,PHP的并发处理
- JDBC学习笔记——事务、存储过程以及批量处理
- 16_python基础—面向对象基础
- html 音标显示乱码,网页显示音标/拼音显示乱码的解决办法(.net)
- 16.凤凰架构:构建可靠的大型分布式系统 --- 向微服务迈进
- 大型门户网站架构分析[转]
- 国外手机短信验证码接收神器(转自美国华人网FuninUSA)
- Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“的解决办法
- 【服务器数据恢复】IBM某型号服务器RAID5磁盘阵列数据恢复案例
- 国内的邮箱哪最好用,个人的邮箱排名?
- 电脑上怎么打开小米手机的便签?
- matlab如何画双x坐标,matlab画双坐标图
- 云计算服务器和vps,云服务器和vps差别
- 老男孩Python自动化开发12期完整版(含作业代码课件)
- 计算机博士军校研究所工作,军校博士毕业怎么分配?
- WEB服务器迁移协议,web服务器迁移
- Unity3d Ugui 18 LayoutElement
热门文章
- Effective C++条款23
- Web入门(1)——制作简单的网页
- 2022年必须知道的数字化转型!
- pytorch入门学习(四)-----计算图与动态图
- matlab 找不到 mcr,如何在没有MCR / MATLAB的情况下在C#中使用MATLAB编译的DLL?
- 6 实现多主机间 Docker 容器通信
- 问题: 一维Schrodinger方程的双线性Strichartz估计的最佳性
- 怎么在vue中发起数据请求
- 第十弹:网络公开课,免费学习资源,2020.07.05更新
- BZOJ3631 [JLOI2014]松鼠的新家