通过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相关推荐

  1. python爬取笔趣阁小说(附源码)

    python爬取笔趣阁小说 文章目录 python爬取笔趣阁小说 前言 一.获取小说目录结构 获取目录连接 请求代码 解析目录 XPath tqdm 解析 二.获取小说章节结构 请求代码 解析章节 代 ...

  2. python爬取小说爬取_用python爬取笔趣阁小说

    原标题:用python爬取笔趣阁小说 首先打开笔趣阁网址,链接,搜索自己想要的小说. 在网站内单击右键,点击检查,会出现如下界面! 我们需要的章节信息就在我划的这块, 可以将每个标签点一下,它对应的内 ...

  3. 1.python爬取笔趣阁小说

    前一阵无聊想学习python,就有了以下代码,选取了笔趣阁这个大众化的网站,百度发现以笔趣阁为名的小说网站很多,本段代码只在百度结果里选取前五条,并选取了三个叫笔趣阁的网站,前五条里包含笔趣阁的任意一 ...

  4. Python爬取笔趣阁小说,有趣又实用!

    上班想摸鱼?为了摸鱼方便,今天自己写了个爬取笔阁小说的程序.好吧,其实就是找个目的学习python,分享一下. 1. 首先导入相关的模块 import os import requests from ...

  5. 用python爬取笔趣阁小说并分章节保存到本地

    在宿舍无聊时想做点小程序,刚好又看到笔趣阁的广告,就想着爬一下小说看看,通过网上的爬取教程整理的 使用beautifulsoup解析request获取的HTML http://beautifulsou ...

  6. Python爬取笔趣阁小说2.0版

    之前的爬虫文章中,我们只可以爬取某本特定的小说,小波大叔一般喜欢看玄幻和修真类的,那么想把这一类小说全部爬下来该怎么操作呢,2.0版本来了,依然还是笔趣阁网站,初学者而言,这个没有反扒机制,比较方便. ...

  7. BeautifulSoup爬取笔趣阁小说并下载到本地

    首先打开笔趣阁网址随便选一篇小说 先请求网址拿到网页的数据代码如下: def __init__(self):#http://www.biquyun.com/14_14055/9195936.html# ...

  8. 1-4 python爬取笔趣阁小说(附带完整代码)

    笔趣看是一个盗版小说网站,这里有很多起点中文网的小说,该网站小说的更新速度稍滞后于起点中文网正版小说的更新速度.并且该网站只支持在线浏览,不支持小说打包下载.所以可以通过python爬取文本信息保存, ...

  9. python爬取笔趣阁小说的代码微小调整修改

    原文来自:  https://blog.csdn.net/u012717715/article/details/92811743 本人说明:其实严格地这不是转载,实际上更应该算是原创!原文代码不能正常 ...

最新文章

  1. mysql declare 赋值_sql server和mysql变量赋值的区别 以及 MySql Declare(转)
  2. 27年前被Nature拒稿,如今斩获诺贝尔奖!学术投稿模式再引热议:都有神奇的评审2...
  3. 用c语言做教学课程安排,C语言入门课程安排
  4. php 堵塞 消息队列,PHP的并发处理
  5. JDBC学习笔记——事务、存储过程以及批量处理
  6. 16_python基础—面向对象基础
  7. html 音标显示乱码,网页显示音标/拼音显示乱码的解决办法(.net)
  8. 16.凤凰架构:构建可靠的大型分布式系统 --- 向微服务迈进
  9. 大型门户网站架构分析[转]
  10. 国外手机短信验证码接收神器(转自美国华人网FuninUSA)
  11. Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“的解决办法
  12. 【服务器数据恢复】IBM某型号服务器RAID5磁盘阵列数据恢复案例
  13. 国内的邮箱哪最好用,个人的邮箱排名?
  14. 电脑上怎么打开小米手机的便签?
  15. matlab如何画双x坐标,matlab画双坐标图
  16. 云计算服务器和vps,云服务器和vps差别
  17. 老男孩Python自动化开发12期完整版(含作业代码课件)
  18. 计算机博士军校研究所工作,军校博士毕业怎么分配?
  19. WEB服务器迁移协议,web服务器迁移
  20. Unity3d Ugui 18 LayoutElement

热门文章

  1. Effective C++条款23
  2. Web入门(1)——制作简单的网页
  3. 2022年必须知道的数字化转型!
  4. pytorch入门学习(四)-----计算图与动态图
  5. matlab 找不到 mcr,如何在没有MCR / MATLAB的情况下在C#中使用MATLAB编译的DLL?
  6. 6 实现多主机间 Docker 容器通信
  7. 问题: 一维Schrodinger方程的双线性Strichartz估计的最佳性
  8. 怎么在vue中发起数据请求
  9. 第十弹:网络公开课,免费学习资源,2020.07.05更新
  10. BZOJ3631 [JLOI2014]松鼠的新家