Python 学习 第二册 第15章 Python和Web

----用教授的方法学习。

目录

15.1 屏幕抓取

15.1.1 Tidy 和 XHTML 解析

15.1.2 Beautiful Soup

15.2 使用 CGI 创建动态网页

15.2.1 第一步:准备 Web 服务器

15.2.2 第二步:添加#!行

15.2.3 第三步:设置文件权限

15.2.4 简单的 CGI 脚本

15.2.5 使用 cgitb 进行调试

15.2.6 使用模块 cgi

15.3 使用 Web 框架


三个重要的主题:屏幕抓取、CGI和mod_python。

15.1 屏幕抓取

简单的屏幕抓取程序

from urllib.request import urlopen 
import re 
p = re.compile('<a href="(/jobs/\\d+)/">(.*?)</a>') 
text = urlopen('http://python.org/jobs').read().decode() 
for url, name in p.findall(text): print('{} ({})'.format(name, url))

15.1.1 Tidy 和 XHTML 解析

1. Tidy是什么

Tidy是用于对格式不正确且不严谨的HTML进行修复的工具。

2. 获取Tidy

有多个用于Python的Tidy库包装器,至于哪个最新并非固定不变的。可像下面这样使用pip来找出可供使用的包装器:

$ pip search tidy

一个不错的选择是PyTidyLib,可像下面这样安装它:

$ pip install pytidylib

也可下载:https://download.csdn.net/download/weixin_38135241/89429925

                   https://download.csdn.net/download/weixin_38135241/89429925

                    https://download.csdn.net/download/weixin_38135241/89429930

3. 为何使用XHTML

XHTML和旧式HTML的主要区别在于,XHTML非常严格,要求显式地结束所有的元素(至少就我们当前的目标而言如此)。

4. 使用HTMLParser

HTMLParser中的回调方法

回调方法 

何时被调用

handle_starttag(tag, attrs) 

遇到开始标签时调用。attrs是一个由形如(name, value)的元组组成的序列

handle_startendtag(tag, attrs) 

遇到空标签时调用。默认分别处理开始标签和结束标签

handle_endtag(tag) 

遇到结束标签时调用

handle_da

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/854747.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【大数据·hadoop】项目实践:IDEA实现WordCount词频统计项目

一、环境准备 1.1&#xff1a;在ubuntu上安装idea 我们知道&#xff0c;在hdfs分布式系统中&#xff0c;MapReduce这部分程序是需要用户自己开发&#xff0c;我们在ubuntu上安装idea也是为了开发wordcount所需的Map和Reduce程序&#xff0c;最后打包&#xff0c;上传到hdfs上…

Python面试宝典:Python中与常用的机器学习库相关的面试笔试题(1000加面试笔试题助你轻松捕获大厂Offer)

Python面试宝典:1000加python面试题助你轻松捕获大厂Offer【第二部分:Python高级特性:第二十六章:Python与数据科学:第三节:Python中常用的机器学习库】 第二十六章:Python与数据科学第三节:Python中常用的机器学习库1. Scikit-learn2. TensorFlow3. PyTorch4. Keras5.…

ASM-MehotdVisitor实践

使用ASM几乎用户全部的精力都是对MethodVisitor的处理&#xff0c;方法code的处理都需要使用这个类进行操作。还是之前文章说过的&#xff0c;ASM单独学习意义并不大&#xff0c;难以达到触类旁通&#xff0c;先行掌握字节码基础后再玩起ASM才能体会真正的乐趣&#xff0c;不然…

【Kubernetes】k8s 自动伸缩机制—— HPA 部署

一、在K8s中扩缩容分为两种&#xff1a; ●Node层面&#xff1a;对K8s物理节点扩容和缩容&#xff0c;根据业务规模实现物理节点自动扩缩容 ●Pod层面&#xff1a;我们一般会使用Deployment中的Replicas参数&#xff0c;设置多个副本集来保证服务的高可用&#xff0c;但是这是…

前端菜鸡流水账日记 -- git管理工具(多版本)

哈喽哇&#xff0c;我又又又来了&#xff0c;其实之前就挺想进行一篇关于git管理工具的分享的&#xff0c;但是一直都没有来的及&#xff0c;直到今天&#xff0c;在学习的时候&#xff0c;&#xff0c;一个朋友新发现了一个vscode中的小插件&#xff0c;所以我就决定一起来分享…

论文阅读ReLU-KAN和Wav-KAN

这是我读KAN系列论文的第三篇&#xff0c;今天把两篇论文放在一起写&#xff0c;分别是&#xff1a; ReLU-KAN&#xff1a; https://arxiv.org/abs/2406.02075 Wav-KAN&#xff1a; https://arxiv.org/abs/2405.12832 之所以放在一起&#xff0c;是因为这两篇论文针对KAN的…

据说可以防静电和浪涌的P6KE30CA

公司有些变送器之前在最后一道校准时&#xff0c;经常发生烧毁的情况。所以在电路的防反接的M7二极管前面又增加了一个TVS二极管&#xff0c;型号P6KE30CA。但愿加了这个好使把。今天又研究了一下这个TVS管子&#xff0c;把搜索到的东西记录一下。放这里备忘把&#xff0c;忘记…

18.实战 LLaMA2-7B 指令微调

实战 LLaMA2-7B 指令微调 实战 LLaMA2-7B 指令微调大模型训练技术总结以模型训练阶段分类&#xff1a;Pre-Training vs Fine-Tuning以微调权重比例分类&#xff1a;FFT vs PEFT以模型训练方法分类&#xff1a;Fine-Tuning vs Instruction-Tuning以模型训练机制分类&#xff1a;…

【五】Linux软件仓库Yum源--SSH远程控制--SCP远程传输

RPM&#xff08;红帽软件包管理器&#xff09; RPM建立统一的数据库文件&#xff0c;记录软件信息并分析依赖关系。目前RPM的优势已经被公众所认可&#xff0c;使用范围也已不局限在红帽系统中了。常见RPM命令如下&#xff1a; 安装软件 rpm -ivh file…

PostgreSQL和Oracle的数据类型对比:时间类型 #PG培训

在数据库管理系统中&#xff0c;时间数据类型是非常关键的一部分。时间数据类型的选择和使用直接影响到数据存储、查询效率和应用程序的设计。本文将对比PostgreSQL和Oracle在时间类型方面的实现和特性。 #PG考试#postgresql培训#postgresql考试#postgresql认证 日期和时间类型…

示例:WPF中应用Grid的SharedSizeGroup设置整齐的布局

一、目的&#xff1a;应用Grid的SharedSizeGroup设置整齐的布局 二、实现 <ItemsControl ItemsSource"{local:GetStudents Count5}"><ItemsControl.ItemTemplate><DataTemplate><Grid ShowGridLines"True"><Grid.ColumnDefinit…

springSecurity(二):实现登入获取token与解析token

登入生成token 主要思想 springSecurity使用UsernamePasswordAuthenticationToken类来封装用户名和密码的认证信息 代码实现 发起登入请求后&#xff0c;进入到login()方法 /*** 在接口中我们通过AuthenticationManager的authenticate方法来进行用户认证,* 所以需要在Secur…

淘宝镜像地址失效

1. 使用nvm安装node时候报错 报错内容 Get "https://npm.taobao.org/mirrors/node/latest/SHASUMS256.txt": tls: failed to verify certificate: x509: certificate has expired or is not yet valid:报错原因 淘宝镜像地址的证书过期了 解决 找到nvm安装的根目…

echarts legend 背景色渐变

问题与本文无关&#xff1a;如果检测软件显示loadsh.js 的版本是4.17.10 装element-ui 2.15.8版本以下&#xff0c;2.15.6经过测试可以 代码&#xff1a; <template><div class"levelMain"><div class"survey-head"><div class"…

vue记录:nextTick

nextTick 是 Vue.js 中的一个核心功能&#xff0c;用于在 DOM 更新完成后执行延迟回调。这在 Vue 的响应式系统中非常有用&#xff0c;因为当数据变化时&#xff0c;Vue 并不立即更新 DOM&#xff0c;而是等待一个“tick”&#xff08;或者叫“微任务”&#xff09;来批量更新。…

RK3568平台(音频篇)声音的数字化和数字音频接口

一.声音信号的数字化 我们应该都知道&#xff0c;声音是一种模拟信号&#xff0c;如果想用于计算机&#xff0c;就必须要将模拟信号转换为数字信号&#xff0c;这样&#xff0c;我们就能在计算机上存储声音了&#xff0c;等待用户想播放的时候&#xff0c;再将数字信号转换为模…

【Java】已解决java.lang.CloneNotSupportedException异常

文章目录 问题背景可能出错的原因错误代码示例正确代码示例注意事项 已解决java.lang.CloneNotSupportedException异常 在Java编程中&#xff0c;java.lang.CloneNotSupportedException是一个常见的运行时异常&#xff0c;它发生在尝试调用对象的clone()方法时&#xff0c;但该…

vlan、vxlan、vpc学习

文章目录 前言VLAN (Virtual Local Area Network)定义工作原理优点应用场景限制 VXLAN (Virtual eXtensible Local Area Network)工作原理优点应用场景与VLAN的区别 VPC (Virtual Private Cloud)定义特点优势应用场景与VLAN/VXLAN的关联 总结 前言 VLAN&#xff08;Virtual Lo…

Linux | grep命令和 find命令有什么区别

如是我闻&#xff1a; 他们俩都是linux系统中具有查找功能的命令&#xff0c;但是grep 和 find 用于不同的目的。grep 用于在文件中查找文本模式&#xff0c;而 find 用于在文件系统中查找文件和目录。下面是它们的主要区别&#xff1a; grep 用途&#xff1a; grep 是用于在…

使用 Vue.js 实现一个电子签名系统

使用 Vue.js 实现一个电子签名系统 电子签名系统在现代应用中越来越普遍&#xff0c;尤其是在文档管理、合同签署等场景中。本文将介绍如何使用 Vue.js 实现一个简单的电子签名系统。 项目初始化 首先&#xff0c;我们需要创建一个新的 Vue.js 项目。如果你还没有安装 Vue C…