Spbeen——Python技术栈

简单的标签搜索

2019-07-21  本文已影响0人  布拉豆

工具

讲解

网页代码都是成对的标签,基础结构如下

<!DOCTYPE html>
<html lang="en">
<head>
    <!--网页头部信息-->
    <title>网页名</title>
</head>
<body>
    <!--下面是网页正文-->
    <div>
        div-text
    </div>
</body>
</html>

网页结构基本都是如此,一般有价值的数据都是在body中

现在开始学习Xpath

html_str = """
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>网页名</title>
</head>
<body>
    <div>
        div-text
        <span>span-text</span>
        <a>a-text</a>
        <p>p-text</p>
    </div>
    <table>
        <tr>
            <th>Heading</th>
            <th>Another Heading</th>
        </tr>
        <tr>
            <td>row 1, cell 1</td>
            <td>row 1, cell 2</td>
        </tr>
        table-text-2
    </table>
</body>
</html>
"""
from lxml import etree
html = etree.HTML(html_str)

这段代码是从lxml中导入etree,然后将前面杜撰的一个html_str字符串通过etree.HTML函数,解析成支持xpath的数据类型,并保存到html变量中

两段代码链接起来,成功运行,那就说明lxml库正常

下面就到了写 xpath 路径的时候了

最终的代码和运行截图

html_str = """
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>网页名</title>
</head>
<body>
    <div>
        div-text
        <span>span-text</span>
        <a>a-text</a>
        <p>p-text</p>
    </div>
    <table class="2">
        <tr>
            <th>Heading</th>
            <th>Another Heading</th>
        </tr>
        <tr>
            <td>row 1, cell 1</td>
            <td>row 1, cell 2</td>
        </tr>
        table-text-2
    </table>
</body>
</html>
"""

from lxml import etree

html = etree.HTML(html_str)
print(html.xpath('head/title/text()'))
print(html.xpath('body/div/span/text()'))
print(html.xpath('body/div/a/text()'))
print(html.xpath('body/div/p/text()'))
print(html.xpath('body/div/text()'))
print(html.xpath('body/table/tr/th/text()'))
print(html.xpath('body/table/tr/td/text()'))
xpath_1

!放在最后

以上就是本篇文章的全部介绍内容了

如果文章中有什么错误或者建议修改的地方,欢迎留言纠正和回复

如果你喜欢本篇文章,不妨关注一下我们的公众号,每周更新两篇原创技术文档,都是干货

微信公众号二维码美化图001.png

更多教程,传送门:Spbeen

上一篇 下一篇

猜你喜欢

热点阅读