当前位置: 首页 > news >正文

黄山地区建设行业网站唐山移动互联网开发

黄山地区建设行业网站,唐山移动互联网开发,北京朝阳区做网站,大连甘井子区很落后吗前言 这次的是一个系列内容 给大家讲解一下何一步一步实现一个完整的实战项目案例系列之 小说下载神器(三)(GUI界面化程序) 多线程采集小说下载、采集排行榜所有小说 哈喽!大家上午好啦,我是爱看小说的栗子…

前言

这次的是一个系列内容

给大家讲解一下何一步一步实现一个完整的实战项目案例系列之

小说下载神器(三)(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(url=html_url, headers=headers)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 id="content">(.*?)<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', mode='a', encoding='utf-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_url=home_url)save(name, title, content)if __name__ == '__main__':url = 'https://www.biqudu.net/1_1631/'name, url_list = get_list_url(html_url=url)exe = concurrent.futures.ThreadPoolExecutor(max_workers=7)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(url=list_url, headers=headers).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(url=index_url, headers=headers)
#     # <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 id="content">(.*?)<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('//*[@class="bookname"]/h1/text()').get()
#     # 提取内容
#     content = '\n'.join(selector.xpath('//*[@id="content"]/text()').getall())
#     print(title)
#     # print(content)
#     # title <文件名> '.txt' 文件格式  a 追加保存 encoding 编码格式 as 重命名
#     with open(file + title + '.txt', mode='a', encoding='utf-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(url=html_url, headers=headers)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 id="content">(.*?)<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', mode='a', encoding='utf-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_url=html_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_url=home_url)for novel_id in href:novel_url = f'https://www.biqudu.net/{novel_id}/'name, url_list = get_list_url(html_url=novel_url)print(name, url_list)for url in url_list:index_url = 'https://www.biqudu.net' + urltitle, content = get_content(html_url=index_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、案例等)

(文章汇总还有更多你案例等你来学习啦~源码找我即可免费!)    

http://www.yingshimen.cn/news/57/

相关文章:

  • 一些好玩的网站迁西住房和建设管理局网站
  • 网站建设营销外包公司排名美媒中国或已建立了51区
  • 郑州高端网站公司品牌策划公司排名
  • 亦庄开发区建设局网站大地影院免费观看大全
  • 网站开发面试自我介绍深圳正规网站建设
  • 浙江平安建设信息系统网站广州市义务教育学校招生报名
  • 贵州省住房与城乡建设厅门户网站安康公司做网站
  • 公司网站怎样实名认证jsp做的网站源码
  • 昆明网站搭建有域名了网站怎么建设
  • 乐度网上购物网站建设方案展示网站欣赏
  • 视频分销网站建设朋友圈推广怎么收费
  • 福州做网站fjfzwlwordpress和dz哪个好
  • 网站建设课的感想九一制作厂网站
  • 怎么做类似清风dj网站建筑网图集
  • 汕头人口宁波seo排名方案
  • 常州网站建设托管icp备案网站名称更改
  • 烟台消防建设信息网站国外那些网站是做菠菜的
  • 食品网站app建设百度大搜数据多少钱一条
  • 互联网站外推广网站不设置关键词描述
  • 温州网站建设推广服务音乐网站开发目的
  • 做海报的网站知乎网站标签布局
  • 中山网站建设备案wordpress评论框修改
  • 756ka网站建设软件商店电脑版官方下载
  • 网站建设深圳给源码河南省建筑市场一体化平台
  • 个人网站模板 html长春建筑公司有哪些公司
  • 网站首页布局的设计创新驱动发展战略的内容
  • 苏州行业网站建设报价专业营销网站费用
  • 昌平网站开发多少钱毕节城乡建设局网站
  • 做外国人生意的网站有哪些广州各区进一步强化
  • 长沙专业网站建设服务怎样做农村电商网站