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

用visual做网站网站软件下载

用visual做网站,网站软件下载,一张图片切块做网站背景,wordpress评论能不能带图前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 本次网站: 本文所有模块\环境\源码\教程皆可点击文章下方名片获取此处跳转 开发环境: python 3.8 运行代码 pycharm 2022.3 辅助敲代码 模块使用: import parsel >>> pip install parsel…

前言

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

本次网站:

本文所有模块\环境\源码\教程皆可点击文章下方名片获取此处跳转

开发环境:

  • python 3.8 运行代码

  • pycharm 2022.3 辅助敲代码

模块使用:

  • import parsel >>> pip install parsel

  • import requests >>> pip install requests

如何安装python第三方模块:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车

  2. 在pycharm中点击Terminal(终端) 输入安装命令

思路

一、数据来源分析

  1. 明确需求:

    采集的网站是什么?

    采集的数据是什么?

    标题/内容

  2. 分析 标题/内容 是从哪里来的

    通过浏览器自带工具: 开发者工具抓包分析

    打开开发者工具: F12 / 鼠标右键点击检查选择network

    刷新网页

    搜索数据, 找到数据包

二. 代码实现

  1. 发送请求, 模拟浏览器对于url地址发送请求

  2. 获取数据, 获取服务器返回响应数据内容

    开发者工具: response

  3. 解析数据, 提取我们想要的数据内容

    标题/内容

  4. 保存数据, 把数据保存本地文件

代码实现

有个视频教程给大家录好啦,但是C站放不上来

源码资料电子书: 点击此处跳转文末名片获取

一、单章小说下载

  • 发送请求

  • 获取数据

import requests
url = '网站链接'
headers = {'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=url, headers=headers)
print(response)
# print(response.text)
  • 解析数据
import re 
import parsel 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)
  • 保存数据
with open(title + '.txt', mode='a', encoding='utf-8') as f:
"""
第一章 标题小说内容
第二章 标题小说内容
"""
f.write(title)
f.write('\n')
f.write(content)
f.write('\n')

二、整本小说下载

import requests
import re
import parsel
import oslist_url = ''
headers = {'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_list = re.findall('<dd> <a style="" href="(.*?)">', html_data)
for url in url_list:index_url = '网址' + urlprint(index_url)headers = {'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)print(response)selector = parsel.Selector(response.text)title = selector.xpath('//*[@class="bookname"]/h1/text()').get()content = '\n'.join(selector.xpath('//*[@id="content"]/text()').getall())print(title)
with open(file + title + '.txt', mode='a', encoding='utf-8') as f:
    """第一章 标题小说内容第二章 标题小说内容"""
f.write(title)
f.write('\n')
f.write(content)
f.write('\n')

三、多线程采集

import requests
import re
import parsel
import os
import concurrent.futures
def get_response(html_url):
"""
发送请求函数
:param html_url: 请求链接
:return: response响应对象
"""
headers = {'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 response
def 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]
url_list = re.findall('<dd> <a style="" href="(.*?)">', html_data)
return name, url_list
def 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, content
def 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):title, content = get_content(html_url=home_url)save(name, title, content)if __name__ == '__main__':url = ''name, url_list = get_list_url(html_url=url)exe = concurrent.futures.ThreadPoolExecutor(max_workers=7)for url in url_list:index_url = '网址' + urlexe.submit(main, index_url)exe.shutdown()

四、采集排行榜所有小说

import requests
import re
import parsel
import os
def get_response(html_url):
"""
发送请求函数
:param html_url: 请求链接
:return: response响应对象
"""
headers = {'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 response
def get_list_url(html_url):
"""
获取章节url/小说名
:param html_url: 小说目录页
:return:
"""
    html_data = get_response(html_url).textname = re.findall('<h1>(.*?)</h1>', html_data)[0]url_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, content
def 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, '已经保存')
"""
获取小说ID
:param html_url: 某分类的链接
:return:
"""
def get_novel_id(html_url):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'网址/{novel_id}/'name, url_list = get_list_url(html_url=novel_url)print(name, url_list)for url in url_list:index_url = '' + urltitle, content = get_content(html_url=index_url)save(name, title, content)breakif __name__ == '__main__':html_url = ''main(html_url)

五、搜索小说功能

  • 模块
import requests
import re
import parsel
import os
import prettytable as pt
  • 发送请求函数
def get_response(html_url):headers = {'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 response
  • 获取章节url/小说名
def get_list_url(html_url):html_data = get_response(html_url).textname = re.findall('<h1>(.*?)</h1>', html_data)[0]url_list = re.findall('<dd> <a style="" href="(.*?)">', html_data)return name, url_list
  • 获取小说内容/小说标题
def get_content(html_url):html_data = get_response(html_url).texttitle = 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, content
  • 保存数据函数
def save(name, title, content):file = f'{name}\\'if not os.path.exists(file):os.mkdir(file)with open(file + name + '.txt', mode='a', encoding='utf-8') as f:f.write(title)f.write('\n')f.write(content)f.write('\n')print(title, '已经保存')
  • 获取小说ID
def get_novel_id(html_url):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 href
  • 搜索功能
def search(word):search_url = f'网址/searchbook.php?keyword={word}'search_data = get_response(html_url=search_url).textselector = parsel.Selector(search_data)lis = selector.css('.novelslist2 li')novel_info = []tb = pt.PrettyTable()tb.field_names = ['序号', '书名', '作者', '书ID']num = 0for li in lis[1:]:name = li.css('.s2 a::text').get()novel_id = li.css('.s2 a::attr(href)').get().replace('/', '')writer = li.css('.s4::text').get()dit = {'name': name,'writer': writer,'novel_id': novel_id,}tb.add_row([num, name, writer, novel_id])num += 1novel_info.append(dit)print('你搜索的结果如下:')print(tb)novel_num = input('请输入你想要下载的小说序号: ')novel_id = novel_info[int(novel_num)]['novel_id']return novel_id
  • 主函数
def main(word):novel_id = search(word)novel_url = f'网址/{novel_id}/'name, url_list = get_list_url(html_url=novel_url)print(name, url_list)for url in url_list:index_url = '网址' + urltitle, content = get_content(html_url=index_url)save(name, title, content)if __name__ == '__main__':word = input('请输入你搜索小说名: ')main(word)

六、GUI界面

import tkinter as tk
from tkinter import ttkdef show():name = name_va.get()print('输入的名字是:', name)def download():name = num_va.get()print('输入的序号:', name)root = tk.Tk()
root.title('完整代码添加VX:python5180 ')
root.geometry('500x500+200+200')
name_va = tk.StringVar()search_frame = tk.Frame(root)
search_frame.pack(pady=10)tk.Label(search_frame, text='书名 作者', font=('微软雅黑', 15)).pack(side=tk.LEFT, padx=10)
tk.Entry(search_frame, relief='flat', textvariable=name_va).pack(side=tk.LEFT)num_va = tk.StringVar()download_frame = tk.Frame(root)
download_frame.pack(pady=10)
tk.Label(download_frame, text='小说 序号', font=('微软雅黑', 15)).pack(side=tk.LEFT, padx=10)
tk.Entry(download_frame, relief='flat', textvariable=num_va).pack(side=tk.LEFT)
button_frame = tk.Frame(root)
button_frame.pack(pady=10)
tk.Button(button_frame, text='查询', font=('微软雅黑', 10), relief='flat', bg='#88e2d6', width=10, command=show).pack(side=tk.LEFT, padx=10)
tk.Button(button_frame, text='下载', font=('微软雅黑', 10), relief='flat', bg='#88e2d6', width=10, command=download).pack(side=tk.LEFT, padx=10)columns = ('num', 'writer', 'name', 'novel_id')
columns_value = ('序号', '作者', '书名', '书ID')
tree_view = ttk.Treeview(root, height=18, show='headings', columns=columns)
tree_view.column('num', width=40, anchor='center')
tree_view.column('writer', width=40, anchor='center')
tree_view.column('name', width=40, anchor='center')
tree_view.column('novel_id', width=40, anchor='center')
tree_view.heading('num', text='序号')
tree_view.heading('writer', text='作者')
tree_view.heading('name', text='书名')
tree_view.heading('novel_id', text='书ID')
tree_view.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
root.mainloop()

效果展示

尾语 💝

要成功,先发疯,下定决心往前冲!

学习是需要长期坚持的,一步一个脚印地走向未来!

未来的你一定会感谢今天学习的你。

—— 心灵鸡汤

本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝

👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇

http://www.hkea.cn/news/152096/

相关文章:

  • 为什么只有中国人怕疫情seo 页面
  • 网站开发总结报告十大门户网站
  • 临淄信息港发布信息临沂seo建站
  • 门户网站系统介绍企业推广哪个平台好
  • 免费网站建站排行榜网站策划报告
  • 网站设计的评估最近发生的热点新闻
  • 设建网站广告投放渠道
  • 日ip5000的网站怎么做如何提高网站在搜索引擎中的排名
  • 网站描文本链接怎么做深圳互联网营销
  • 一个服务器做两个网站自己做网站
  • 百草味网站建设的活动方案营销型企业网站有哪些
  • 论文课程网站 建设背景项目推广方式有哪些
  • 内部网站建设关键词优化推广策略
  • 一个公司可以做几个网站备案贵阳网络推广排名
  • 武汉高端网站建设免费广告网
  • 大理建网站常用于网站推广的营销手段是
  • js怎么做网站跨境电商网站
  • 台州外贸网站建设百度推广费用多少
  • 虚拟机怎么做网站空间培训班管理系统 免费
  • wordpress离线文章发布郑州seo关键词排名优化
  • 龙岗区网站建设中国职业培训在线
  • 南山网站建设外包优化网站
  • 个人怎么做网站推广神起网络游戏推广平台
  • 做网站的关键技术运营推广的方式和渠道有哪些
  • jsp做就业网站网推项目
  • 网站开发的目的和意义重庆seo排名电话
  • 顺义专业建站公司最有效的线上推广方式
  • 大连网站网站搭建制作百度识图 上传图片
  • 给人做网站多少钱黑科技引流推广神器怎么下载
  • 沈阳做网站最好的公司百度快照怎么删除