python项目练习——15.网页爬虫应用程序

这个项目可以让用户输入一个网址,然后爬取该网页的内容,并提取出其中的信息,比如标题、链接等。这个项目涉及到网络请求、HTML 解析、数据提取等方面的技术。

代码示例:

import tkinter as tk # 导入 Tkinter 库

from tkinter import scrolledtext # 导入 scrolledtext 模块

import requests # 导入 requests 库

from bs4 import BeautifulSoup # 导入 BeautifulSoup 库

class WebScraperApp:

def init(self, master):

self.master = master

self.master.title('简易网页爬虫')

创建界面组件

self.label_url = tk.Label(master, text='网址:')

self.label_url.grid(row=0, column=0)

self.entry_url = tk.Entry(master)

self.entry_url.grid(row=0, column=1)

self.btn_scrape = tk.Button(master, text='爬取', command=self.scrape_website)

self.btn_scrape.grid(row=0, column=2)

self.textbox = scrolledtext.ScrolledText(master, width=40, height=10)

self.textbox.grid(row=1, column=0, columnspan=3)

def scrape_website(self):

url = self.entry_url.get()

if url:

try:

response = requests.get(url) # 发送请求获取网页内容

soup = BeautifulSoup(response.text, 'html.parser') # 使用 BeautifulSoup 解析网页内容

提取网页标题并显示在文本框中

title = soup.title.string.strip()

self.textbox.insert(tk.END, f'标题: {title}\n')

提取所有链接并显示在文本框中

links = soup.find_all('a')

for link in links:

href = link.get('href')

self.textbox.insert(tk.END, f'链接: {href}\n')

except Exception as e:

self.textbox.insert(tk.END, f'爬取网页失败: {e}\n')

else:

self.textbox.insert(tk.END, '请输入网址\n')

if name == 'main':

root = tk.Tk() # 创建主窗口

app = WebScraperApp(root) # 创建网页爬虫应用程序实例

root.mainloop() # 运行主事件循环

代码逻辑分析:

使用 Tkinter 库创建了一个简单的图形界面网页爬虫应用程序。用户可以在输入框中输入网址,点击爬取按钮将网页内容爬取下来,并提取其中的标题和链接,并在界面上显示出来。网页内容通过 requests 库发送请求获取,然后通过 BeautifulSoup 库解析 HTML 内容提取信息。

相关推荐
江华森18 分钟前
Python神经网络编程(四):Python从零搭建神经网络
开发语言·python·神经网络
Helen_cai1 小时前
OpenHarmony 完整项目工程整合规范 + 模块化分层架构(API23+ 标准企业级结构)
开发语言·华为·php·harmonyos
大圣编程6 小时前
Java 多维数组详解
java·开发语言
殳翰9 小时前
下服务器端开发流程及相关工具介绍(C++)
开发语言·c++
落寞的星星10 小时前
这个对象就包含了已经转换好的DFA和各种词法分析器运转所需要的参数。下一步,我们就可以用ScannerInfo对象创建出Scanner对象,请看下面的代码:
开发语言·c#
nothing&nowhere10 小时前
用 Python 做问卷数据清洗:无效样本检测与处理实战
开发语言·python·数据清洗·数据处理·问卷星·问卷星脚本·刷问卷
花酒锄作田10 小时前
如何发布自己的 Python 库到 PyPI
python
2601_9615934210 小时前
Rust 开发环境配置繁琐?RustRover 开箱即用搞定编码调试
开发语言·后端·macos·rust
researcher-Jiang10 小时前
Design Patterns——Template Method入门到情景实战
python·设计模式·模板方法模式
HZZD_HZZD11 小时前
DL/T 645-2026新国标深度解读与智能电表协议适配实战:从帧结构变化到Java采集器升级的全链路改造方案
java·开发语言