python简单使用xpath查找网页元素

 
   

xPath
一种HTML和XML的查询语言,他能在XML和HTML的树状结构中寻找节点

安装
pip install lxml

 
   

HTML
超文本标记语言,是一种规范,一种标注,是构成网页文档的主要语言

URL
统一资源定位器,互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置
以及浏览应该怎么处理它。

xPath的使用
获取文本
//标签1[@属性1="属性值1"]/标签2[@属性2="属性值"]/..../text()

获取属性值
//标签1[@属性1="属性值1"]/标签2[@属性2="属性值"]/..../@属性n

所需要的html文档
<!DOCTYPE html>
<html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>注册页面</title>
        <style>
            table{
                border: 1px solid beige;
            }
            span{
                color: #66CCFF;
            }
            th{
                background-color: gainsboro;
            }
            tr{
                border: 1px solid beige;
            }
            td{
                border: 1px solid aliceblue;
            }
            .redText{
                color: red;
            }
            .redStar{
                color: red;
            }
        </style>
    </head>
    <body>
            <p>
            开始
        </p>
        <!-- 8列-->
        <h3>标题,我是一个大帅哥</h3>
        <ul>
            <li>内容1</li>
             <li>内容2</li>
             <li class="important">内容3important</li>
             <li>内容4</li>
             <li>内容5</li>
        </ul>
                    <p>
            中间
        </p>
        <div id = "container">
            段落文字
            <a href="http://www.baidu.com" title="超链接">跳转到百度首页</a>
        </div>
        <p>
            最后
        </p>
        <form action="">
            <table align="center" cellspacing="0">
                <tr>
                    <th colspan="8" align="left">1.会员登录名和密码</th>
                </tr>
                <tr>
                    <td>用户名:</td>
                    <td colspan="2"><input type="text"/><span class="redStar">*&emsp;</span></td>
                    <td colspan="5"><input type="button" value="检测用户名"/><span>5-15位,请使用英文(a-z、A-Z)、数字(0-9)</span></td>
                </tr>
                <tr>
                    <td>&emsp;码:</td>
                    <td colspan="2"><input type="password"/><span class="redStar">*&emsp;</span></td>
                    <td colspan="5"><span>5-15位,请使用英文(a-z)、数字(0-9)注意区分大小写;<br/>密码不能与登录名相同;易记;难猜;</span></td>
                </tr>
                <tr>
                    <td>再次输入密码:</td>
                    <td colspan="2"><input type="password"/><span class="redStar">*&emsp;</span></td>
                    <td colspan="5"><span>两次输入的密码必须一致</span></td>
                </tr>
                <tr>
                    <th colspan="8" align="left">2.姓名和联系方式</th>
                </tr>
                <tr>
                    <td>真实姓名:</td>
                    <td colspan="2"><input type="text"/><span class="redStar">*&emsp;</span></td>
                    <td colspan="5"><input type="radio" checked="checked" name="Sex" value="male"/>先生<input type="radio" name="Sex" value="female"/>小姐</td>
                </tr>
                <tr>
                    <td>电子邮箱:</td>
                    <td colspan="2"><input type="text"/><span class="redStar">*&emsp;</span></td>
                    <td colspan="5"><span class="redText">非常重要!</span><br/><span>这是客户与您联系的首选方式,请一定填写真实。</span></td>
                </tr>
                <tr>
                    <td>固定电话:</td>
                    <td colspan="2"><input type="text"/><span class="redStar">*&emsp;</span></td>
                    <td colspan="5"><span>区号+电话号码</span></td>
                </tr>
                <tr>
                    <td>公司所在地:</td>
                    <td colspan="7">
                        <select>
                            <option>北京</option>
                            <option>上海</option>
                            <option>成都</option>
                        </select>
                        <select>
                            <option>东城
                            </option>
                            <option>武侯区</option>
                            <option>金牛区</option>
                        </select>
                    </td>
                </tr>
                <tr>
                    <td>街道地址:</td>
                    <td colspan="5"><input style="width: 350px;" type="text"/><span class="redStar">*&emsp;</span></td>
                    <td colspan="2"><span>填写县(区)、街道、门牌号</span></td>
                </tr>
                <tr>
                    <td>传真号码:</td>
                    <td colspan="7"><input type="text"/></td>
                </tr>
                <tr>
                    <td>手机号码:</td>
                    <td colspan="7"><input type="text"/></td>
                </tr>
                <tr>
                    <td>邮政编码:</td>
                    <td colspan="7"><input type="text"/></td>
                </tr>
                <tr>
                    <th colspan="8" align="left">3.公司名称和主营业务</th>
                </tr>
                <tr>
                    <td>贵公司名称:</td>
                    <td colspan="2"><input type="text"/><span class="redStar">*&emsp;</span></td>
                    <td colspan="5"><span>请填写在工商注册的公司/商号全称;<br/>无商号的个体经营者填写执照上的姓名,如:张三(个体经营)</span></td>
                </tr>
                <tr>
                    <td>你的职位:</td>
                    <td colspan="2"><input type="text"/><span class="redStar">*&emsp;</span></td>
                    <td colspan="5"></td>
                </tr>
                <tr>
                    <td>主营行业:</td>
                    <td colspan="2">
                        <select>
                            <option>电子电工</option>
                            <option>IT科技</option>
                            <option>小猪佩奇</option>
                        </select>
                    </td>
                    <td colspan="5"><span>请正确选择。您会收到该行业、该产品的供求信息</span></td>
                </tr>
                <tr>
                    <td>主营产品/服务:</td>
                    <td colspan="7"><input  style="width: 250px;" type="text"/><span class="redStar">*&emsp;</span><span>3个主要相关品名/服务名,最少要填一个。例如:太阳帽,布料,拉链</span>
                    </td>
                </tr>
                <tr>
                    <td>公司地址:</td>
                    <td colspan="7"><input  style="color: darkgrey;width: 250px;" type="text" value="http://"/></td>
                </tr>
                <tr>
                    <td></td>
                    <td colspan="7"><input style="background-color: #00FF00;color: white" type="submit" value="确认提交"/></td>
                </tr>
            </table>
        </form>
    </body>
</html>
---------------------
作者:郑清
来源:CSDN
原文:https://blog.csdn.net/qq_38225558/article/details/82700939
版权声明:本文为博主原创文章,转载请附上博文链接!
 
   
所涉及的python代码

from lxml import html

def parse():
    """"将html文件中的内容,使用小path进行提取"""
    #读取文件中的内容
    f = open('./venv/static_/index.html','r',encoding = 'utf-8')
    s = f.read()

    selector = html.fromstring(s)
    #j解析标题
    h3 = selector.xpath('/html/body/h3/text()')
    print(h3[0])#这里取到的是个list,我用使用列表获取
    f.close()

    #解析ul里面的内容
    ul = selector.xpath('/html/body/ul/li')
    # ul = selector.xpath('//ul/li')也可以使用
    print(len(ul))
    for li  in ul:
        print(li.xpath('text()')[0])

    #解析tr里面的内容
    # tr = selector.xpath('/html/body/form/table/tr/td/text()')
    # print(tr)

    #解析ul指定的元素值
    ul2 = selector.xpath('/html/body/ul/li[@class="important"]/text()')
    print(ul2)

    #解析ul指定的元素属性
    a = selector.xpath('//div[@id="container"]/a/text()')
    print(a[0])

    #href属性
    alink = selector.xpath('//div[@id="container"]/a/@href')
    print(alink[0])

    #解析p标签
    p = selector.xpath('/html/body/p/text()')
    # p = selector.xpath('/html/body/p[last()]/text()') #获取最后一个
    print(len(p))
    print(p[0])

    #使用浏览的xpath生成工具
    test = selector.xpath('/html/body/form/table/tr[1]/th/text()')#只能借鉴/html/body/form/table/tbody/tr[1]/th
    print(test[0])


if __name__== '__main__':
    parse()



少壮不努力,老大徒伤悲
标签: python
0
0
«  上一篇: python与json转换
»  下一篇: python自动化selenium封装
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值