扬州建设银行网站,大型网站建设 教程,h5页面制作软件下载下来要钱吗,网站推广软件免费版大全前言 这次的是一个系列内容 给大家讲解一下何一步一步实现一个完整的实战项目案例系列之 小说下载神器#xff08;三#xff09;#xff08;GUI界面化程序#xff09; 多线程采集小说下载、采集排行榜所有小说 哈喽#xff01;大家上午好啦#xff0c;我是爱看小说的栗子…前言 这次的是一个系列内容 给大家讲解一下何一步一步实现一个完整的实战项目案例系列之 小说下载神器三GUI界面化程序 多线程采集小说下载、采集排行榜所有小说 哈喽大家上午好啦我是爱看小说的栗子同学。 所有文章完整的素材源码都在 粉丝白嫖源码福利请移步至CSDN社区或文末公众hao即可免费。 今天这一期就如开头写的内容一样接着来学习小说下载下一期就写搜索界面跟GUI界面
啦~下一期就是小说下载器的最后一篇文章。
好啦话不多说直接开始今天的正题吧
主要内容用Python代码实现多线程方式采集小说以及采集排行榜所有小说内容。 正文
一、运行环境 本文用到的环境如下—— Python3、Pycharm社区版第三方模块requests等
部分自带的库只 要安装完 Python就可 以直接使用了需要安装 的库的话看教程下 一般安装pip install 模块名 镜像源安装pip install -i https://pypi.douban.com/simple/模块名
二、多线程采集小说
代码注释的很清楚的对家可以看着学习。
1主程序 # 导入数据请求模块 -- 第三方模块, 需要安装
import requests
# 导入正则表达式模块 -- 内置模块, 不需要安装
import re
# 导入数据解析模块 -- 第三方模块, 需要安装
import parsel
# 导入文件操作模块 -- 内置模块, 不需要安装
import os
# 导入线程池
import concurrent.futuresdef get_response(html_url):发送请求函数:param html_url: 请求链接:return: response响应对象# 模拟浏览器 headers 请求头headers {# user-agent 用户代理 表示浏览器基本身份信息user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36}response requests.get(urlhtml_url, headersheaders)return responsedef get_list_url(html_url):获取章节url/小说名:param html_url: 小说目录页:return:# 调用发送请求函数html_data get_response(html_url).text# 提取小说名字name re.findall(h1(.*?)/h1, html_data)[0]# 提取章节urlurl_list re.findall(dd a style href(.*?), html_data)return name, url_listdef get_content(html_url):获取小说内容/小说标题:param html_url: 小说章节url:return:# 调用发送请求函数html_data get_response(html_url).text# 提取标题title re.findall(h1(.*?)/h1, html_data)[0]# 提取内容content re.findall(div idcontent(.*?)p, html_data, re.S)[0].replace(br/br/, \n)return title, contentdef save(name, title, content):保存数据函数:param name: 小说名:param title: 章节名:param content: 内容:return:# 自动创建一个文件夹file f{name}\\if not os.path.exists(file):os.mkdir(file)with open(file title .txt, modea, encodingutf-8) as f:第一章 标题小说内容第二章 标题小说内容# 写入内容f.write(title)f.write(\n)f.write(content)f.write(\n)print(title, 已经保存)def main(home_url):# index_url https://www.biqudu.net urltitle, content get_content(html_urlhome_url)save(name, title, content)if __name__ __main__:url https://www.biqudu.net/1_1631/name, url_list get_list_url(html_urlurl)exe concurrent.futures.ThreadPoolExecutor(max_workers7)for url in url_list:index_url https://www.biqudu.net urlexe.submit(main, index_url)exe.shutdown()# # 请求链接: 小说目录页
# list_url https://www.biqudu.net/1_1631/
# # 模拟浏览器 headers 请求头
# headers {
# # user-agent 用户代理 表示浏览器基本身份信息
# user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36
# }
# # 发送请求
# html_data requests.get(urllist_url, headersheaders).text
# # 提取小说名字
# name re.findall(h1(.*?)/h1, html_data)[0]
# # 自动创建一个文件夹
# file f{name}\\
# if not os.path.exists(file):
# os.mkdir(file)
#
# # 提取章节url
# url_list re.findall(dd a style href(.*?), html_data)
# # for循环遍历
# for url in url_list:
# index_url https://www.biqudu.net url
# print(index_url)
#
# 1. 发送请求, 模拟浏览器对于url地址发送请求
# 请求链接: https://www.biqudu.net/1_1631/3047505.html
# 安装模块方法:
# - win R 输入cmd, 输入安装命令 pip install requests
# - 在pycharm终端, 输入安装命令
# 模拟浏览器 headers 请求头:
# 字典数据结构
# AttributeError: set object has no attribute items
# 因为headers不是字典数据类型, 而是set集合
#
# # # 请求链接
# # url https://www.biqudu.net/1_1631/3047506.html
# # 模拟浏览器 headers 请求头
# headers {
# # user-agent 用户代理 表示浏览器基本身份信息
# user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36
# }
# # 发送请求
# response requests.get(urlindex_url, headersheaders)
# # Response [200] 响应对象, 表示请求成功
# print(response)
#
# 2. 获取数据, 获取服务器返回响应数据内容
# 开发者工具: response
# response.text -- 获取响应文本数据 网页源代码/html字符串数据
# 3. 解析数据, 提取我们想要的数据内容
# 标题/内容
#
# re正则表达式: 是直接对于字符串数据进行解析
# re.findall(什么数据, 什么地方) -- 从什么地方, 去找什么数据
# .*? -- 可以匹配任意数据, 除了\n换行符
# # 提取标题
# title re.findall(h1(.*?)/h1, response.text)[0]
# # 提取内容
# content re.findall(div idcontent(.*?)p, response.text, re.S)[0].replace(br/br/, \n)
#
# css选择器: 根据标签属性提取数据
# .bookname h1::text
# 类名为bookname下面h1标签里面文本
# get() -- 提取第一个标签数据内容 返回字符串
# getall() -- 提取多个数据, 返回列表
# # 提取标题
# title selector.css(.bookname h1::text).get()
# # 提取内容
# content \n.join(selector.css(#content::text).getall())
#
# xpath节点提取: 提取标签节点提取数据
#
#
# # 获取下来response.text html字符串数据, 转成可解析对象
# selector parsel.Selector(response.text)
# # 提取标题
# title selector.xpath(//*[classbookname]/h1/text()).get()
# # 提取内容
# content \n.join(selector.xpath(//*[idcontent]/text()).getall())
# print(title)
# # print(content)
# # title 文件名 .txt 文件格式 a 追加保存 encoding 编码格式 as 重命名
# with open(file title .txt, modea, encodingutf-8) as f:
#
# 第一章 标题
# 小说内容
# 第二章 标题
# 小说内容
#
# # 写入内容
# f.write(title)
# f.write(\n)
# f.write(content)
# f.write(\n)
2效果展示 三、采集排行榜所有小说
下面我们采集玄幻榜单所有小说具体看是怎么操作的呢 主要是要获取所有小说id—— 1主程序
环境安装都是一样的方式看最上面安装就可以第三方库这里只是多了parsel库。
import requests
import re
import parsel
import osdef get_response(html_url):发送请求函数:param html_url: 请求链接:return: response响应对象# 模拟浏览器 headers 请求头headers {# user-agent 用户代理 表示浏览器基本身份信息user-agent: Mozilla/5.0 (Windows NT 10.0 WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36}response requests.get(urlhtml_url, headersheaders)return responsedef get_list_url(html_url):获取章节url/小说名:param html_url: 小说目录页:return:# 调用发送请求函数html_data get_response(html_url).text# 提取小说名字name re.findall(h1(.*?)/h1, html_data)[0]# 提取章节urlurl_list re.findall(dd a style href(.*?), html_data)return name, url_listdef get_content(html_url):获取小说内容/小说标题:param html_url: 小说章节url:return:# 调用发送请求函数html_data get_response(html_url).text# 提取标题title re.findall(h1(.*?)/h1, html_data)[0]# 提取内容content re.findall(div idcontent(.*?)p, html_data, re.S)[0].replace(br/br/, \n)return title, contentdef save(name, title, content):保存数据函数:param name: 小说名:param title: 章节名:param content: 内容:return:# 自动创建一个文件夹file f{name}\\if not os.path.exists(file):os.mkdir(file)with open(file title .txt, modea, encodingutf-8) as f:第一章 标题小说内容第二章 标题小说内容# 写入内容f.write(title)f.write(\n)f.write(content)f.write(\n)print(title, 已经保存)def get_novel_id(html_url):获取小说ID:param html_url: 某分类的链接:return:# 调用发送请求函数novel_data get_response(html_urlhtml_url).textselector parsel.Selector(novel_data)href selector.css(.l .s2 a::attr(href)).getall()href [i.replace(/, ) for i in href]return hrefdef main(home_url):href get_novel_id(html_urlhome_url)for novel_id in href:novel_url fhttps://www.biqudu.net/{novel_id}/name, url_list get_list_url(html_urlnovel_url)print(name, url_list)for url in url_list:index_url https://www.biqudu.net urltitle, content get_content(html_urlindex_url)save(name, title, content)breakif __name__ __main__:html_url https://www.biqudu.net/biquge_1/main(html_url)
2效果展示 总结
好啦今天的内容到这里就结束了哈想看的60多本小说全部爬下来了大家可以自己慢慢看
很久了~下一期这个系列内容就完结了希望大家好好学一下哦
✨完整的素材源码等可以滴滴我吖或者点击文末hao自取免费拿的哈~ 推荐往期文章—— 推荐往期文章——
项目1.0 小说下载神器GUI界面系列内容
Python实战之小说下载神器一看小说怎么能少了这款宝藏神器呢全网小说书籍随便下随便看爆赞你准备好了吗
项目1.1 小说下载神器GUI界面系列内容 Python实战之小说下载神器二整本小说下载看小说不用这个程序我实在替你感到可惜*小说爱好者必备
项目1.6 【Python实战】听书就用它了海量资源随便听,内含几w书源,绝对精品哦~
项目1.8 【Python实战】海量表情包炫酷来袭快来pick斗图新姿势吧~(超好玩儿)
文章汇总——
Python文章合集 | (入门到实战、游戏、Turtle、案例等)
文章汇总还有更多你案例等你来学习啦~源码找我即可免费