整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

python解析XML和HTML

eautiful Soup 包:

Beautiful Soup: Python 的第三方插件用来提取 xml 和 HTML 中的数据。官网地址 https://www.crummy.com/software/BeautifulSoup/

1、安装 Beautiful Soup

打开 cmd(命令提示符),进入到 Python(Python2.7版本)安装目录中的 scripts 下,输入 dir 查看是否有 pip.exe, 如果用就可以使用 Python 自带的 pip 命令进行安装,输入以下命令进行安装即可:

pip install beautifulsoup4

2、测试是否安装成功

编写一个 Python 文件,输入:

import bs4

print bs4

运行该文件,如果能够正常输出则安装成功。

五、使用 Beautiful Soup 解析 html 文件

# -*- coding: UTF-8 -*-
import bs4
import re

from bs4 import BeautifulSoup

html_doc = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
"""
# 创建一个BeautifulSoup解析对象
soup = BeautifulSoup(html_doc, "html.parser", from_encoding="utf-8")
# 获取所有的链接
links = soup.find_all('a')
print("所有的链接")

for link in links:
    print(link.name, link['href'], link.get_text())

print("获取特定的URL地址")
link_node = soup.find('a', href="http://example.com/elsie")
print(link_node.name, link_node['href'], link_node['class'], link_node.get_text())

print("正则表达式匹配")

link_node = soup.find('a', href=re.compile(r"ti"))
print(link_node.name, link_node['href'], link_node['class'], link_node.get_text())

print("获取P段落的文字")

p_node = soup.find('p', class_='story')
print(p_node.name, p_node['class'], p_node.get_text())

===========

输出:

isual Studio Code 是一款轻量级但功能强大的源代码编辑器,适用于 Windows、macOS 和 Linux。内置了对 JavaScript、TypeScript 和 Node.js 的支持,并为其他语言(例如 C++、C#、Java、Python、PHP、Go)并且提供了丰富的扩展生态系统。

今天我将给大家介绍下VS Code常用操作及非常棒的插件,喜欢本文记得收藏、点赞、关注。

关于VScode历史推文一并总结如下:

  • 超强大!没有这 24 款插件的 VScode 是没有灵魂的!
  • 安装图文并茂,插件体验超棒,VScode 这款编辑器神器详细教程来了!
  • 效率倍增!10个超级好用的VScode使用技巧!
  • 爱了爱了!8 个被低估但功能非常强大的 VSCode 插件!
  • 开发神器 VsCode 配置指南!(含 Python、C++、Java环境配置)

废话不多说,我们开始吧!

使用教程

1.搜索扩展

您可以清除“扩展”视图顶部的“搜索”框,然后输入您要查找的扩展、工具或编程语言的名称。

2.列出已安装的扩展

默认“扩展”视图显示当前的扩展、推荐的所有扩展以及已禁用的所有扩展的折叠视图。可以使用命令面板( Ctrl+Shift+P ) 命令清除搜索框中的任何文本并显示所有已安装扩展的列表。

3.卸载扩展

要卸载扩展,请选择扩展条目右侧的管理齿轮按钮,然后从下拉菜单中选择卸载。可以卸载扩展并提示您重新加载 VS Code。

4.禁用扩展

如果不想永久删除扩展程序,可以通过单击扩展程序条目右侧的齿轮按钮暂时禁用扩展程序。

在全局禁用扩展或仅针对当前工作区禁用扩展。禁用扩展后,系统将提示重新加载 VS Code。

5.启用扩展

如果禁用了某个扩展程序,可以使用下拉菜单中的Enable或Enable (Workspace)命令重新启用它。

6.更新扩展

自动更新:VS Code 检查扩展更新并自动安装。更新后,系统会提示您重新加载 VS Code。

手动更新:使用Show Outdated Extensions命令快速查找扩展更新,显示当前安装的扩展程序的所有可用更新,为过时的扩展选择更新按钮,更新将被安装,系统将提示重新加载 VS Code。

扩展介绍

1.Python

对Python 语言有丰富的支持,包括 IntelliSense (Pylance)、linting、调试、代码导航、代码格式化、重构、变量浏览器等功能、测试资源管理器等。

2.Jupyter

它提供基本的笔记本支持语言内核所支持许多语言内核无需修改即可工作。默认Jupyter 扩展包括 Jupyter Keymaps 和 Jupyter Notebook Renderers 扩展。

3.C/C++

C/C++ 扩展为 Visual Studio Code 添加了对 C/C++ 的语言支持,包括 IntelliSense 和调试等功能。

4.ESLint

ESLint 是一种用于识别和报告在 ECMAScript/JavaScript 代码中发现的模式的工具,其目标是使代码更加一致并避免错误。在许多方面,它类似于 JSLint 和 JSHint。

5.Prettier

Prettier支持我们大前端目前大部分语言处理,包括 JavaScript · Flow · TypeScript · CSS · SCSS · Less · JSX · Vue · GraphQL · JSON · Markdown,这代表着, 你几乎可以用一个工具都能搞定所有的代码格式化问题。

6.Live Server

为静态和动态页面启动具有实时重新加载功能的开发本地服务器

7.Visual Studio IntelliCode

提供了为Python,TypeScript/ JavaScript和Java开发AI辅助开发功能在Visual Studio代码,基于代码的上下文与机器学习相结合。

8.Code Runner

运行多种语言的代码片段或代码文件,省掉保存的环节,直接可以运行

9.Chinese (Simplified) (简体中文)

为VS Code 使用者提供汉字化界面,针对英文界面使用不太熟练的使用者

10.background

平时编程总是对着一顿枯燥的代码背景,VSCode一个神仙插件Background,可以更改自己想要的背景图,下面来介绍一波。

具体实现效果图:

背景图放最上面了,之前写过一篇文章。

11.Auto Rename Tag

自动重命名配对的 HTML/XML 标签,与 Visual Studio IDE 相同。

12.Better Comments

Better Comments 扩展将帮助您在代码中创建更人性化的注释。使用此扩展程序,您将能够将注释分类为:

  1. 警报
  2. 查询
  3. 待办事项
  4. 强调
  5. 注释掉的代码也可以设置样式以明确代码不应该在那里
  6. 可以在设置中指定您想要的任何其他评论样式

13.Draw io Integration

在VSCode中就可以创建思维导图,要创建新图表,只需创建一个空的*.drawio,*.drawio.svg*.drawio.png文件并打开它drawio.svg、.drawio.png嵌入到 Github,不需要导出。

14.Markdown emoji

向 VS Code 的内置 Markdown 预览添加:emoji:语法支持 ,生成表情

15.WakaTime

直观的反应你一天学习打代码的时间,通过各种图表计算


ytest常用插件

插件列表网址:https://plugincompat.herokuapp.com 包含很多插件包,大家可依据工作的需求选择使用。

前置条件

1.文件路径:

- Test_App
- - test_abc.py
- - pytest.ini

2.pyetst.ini配置文件内容:

 [pytest]
# 命令行参数
 addopts = -s
# 搜索文件名
 python_files = test_*.py
 # 搜索的类名
 python_classes = Test_*
#搜索的函数名
    python_functions = test_*

1 pytest-html测试报告插件

pytest-HTML是一个插件,pytest用于生成测试结果的HTML报告。兼容Python 2.7,3.6

安装方式:pip install pytest-html

pip install pytest-html

通过命令行方式,生成xml/html格式的测试报告,存储于用户指定路径。插件名称:pytest-html

使用方法: 命令行格式:pytest --html=用户路径/report.html

示例:

import pytest
class TestDemo():
    def setup_class(self):
        print("------->setup_class")
    def teardown_class(self):
        print("------->teardown_class")
    def test_a(self):
        print("------->test_a")
        assert 1
    def test_b(self):
            print("------->test_b")
            assert 0 # 断言失败```

运行方式:

1.修改Test_App/pytest.ini文件,添加报告参数,即:addopts = -s --html=./report.html

-s:输出程序运行信息

--html=./report.html 在当前目录下生成report.html文件 ️ 若要生成xml文件,可将--html=./report.html 改成 --html=./report.xml

2.命令行进入Test_App目录 3.执行命令: pytest 执行结果: 1.在当前目录会生成assets文件夹和report.html文件

2 pytest-rerunfailures失败重试

失败重试意思是指定某个用例执行失败可以重新运行。

下载安装

pip install pytest-rerunfailures

使用

需要在pytest.ini文件中,给addopts字段新增(其他原有保持不变)--reruns=3字段,这样如果有用例执行失败,则再次执行,尝试3次。 配置:

[pytest]
addopts = -s --html=report/report.html --reruns=3

代码实例如下:

import pytest

def test_case01():
    print('执行用例01.......')
    assert 1  # 断言成功

def test_case02():
    print('执行用例02.......')
    assert 0  # 断言失败,需要重新执行

class TestCaseClass(object):

    def test_case_03(self):
        print('执行用例03.......')
        assert 1

我们也可以从用例报告中看出重试的结果。

失败重试包括两种情况:一种情况:用例失败了,然后重新执行多少次都没有成功。另一种情况,那就是用例执行失败,重新执行次数内通过了,那么剩余的重新执行的次数将不再执行。

3 pytest-ordering控制用例执行顺序

如何手动控制多个用例的执行顺序,这里也依赖一个插件。

下载安装

>pip install pytest-ordering

使用实例

手动控制用例执行顺序的方法是在给各用例添加一个装饰器:

@pytest.mark.run(order=x)   # x 是一个整数

代码如下:

import pytest

class TestCaseClass(object):
    @pytest.mark.run(order=3)
    def test_case_03(self):
        print('执行用例03.......')
        assert 1

    @pytest.mark.run(order=2)
    def test_case01():
        print('执行用例01.......')
        assert 1  # 断言成功

    @pytest.mark.run(order=1)
    def test_case02():
        print('执行用例02.......')
        assert 1  # 断言成功

那么, 现在的执行顺序是2 1 3,按照order指定的排序执行的。

如果传个0或者负数啥的,那么它们的排序关系应该是这样的:

0 > 正数 > 没有参与的用例 > 负数
# 正数和负数就是按照大小关系排列的

4 pytest-xdist并发执行

一条一条用例的执行,肯定会很慢,来看如何并发的执行测试用例,当然这需要相应的插件

下载安装

pip install pytest-xdist

使用

在pytest.ini 配置文件中addopts 添加 -n=auto , 修改配置如下:

[pytest]
addopts =  -v -s --html=report/report.html -n=auto

就是这个-n=auto

  • -n=auto,自动侦测系统里的CPU数目。
  • -n=numprocesses,也就是自己指定运行测试用例的进程数。

并发的配置可以写在配置文件中,然后其他正常的执行用例脚本即可

import pytest

def test_case01():
    print('执行用例01.......')
    assert 1  # 断言成功

@pytest.mark.skipif(condition= 2 > 1, reason='跳过用例')
def test_case02():
    print('执行用例02.......')
    assert 0  # 断言失败

class TestCaseClass(object):

    def test_case_03(self):
        print('执行用例03.......')
        assert 1

    def test_case_04(self):
        print('执行用例04.......')
        assert 1

5 pytest-sugar

pytest-sugar 改变了 pytest 的默认外观,添加了一个进度条,并立即显示失败的测试。它不需要配置,只需 下载插件即可,用 pytest 运行测试,来享受更漂亮、更有用的输出。

安装下载

pip install pytest-sugar

其他照旧执行用例即可。

6 pytest-cov

pytest-cov 在 pytest 中增加了覆盖率支持,来显示哪些代码行已经测试过,哪些还没有。它还将包括项目的测试覆盖率。

下载

pip install pytest-cov

使用

在配置文件pytest.ini中配置--cov=./scripts ,这样,它就会统计所有scripts目录下所有符合规则的脚本的测试覆盖率。

配置修改如下:

[pytest]
addopts =  -v -s --html=report/report.html -n=auto --cov=./scripts

执行的话,就照常执行就行。