python 根据标签名获取标签内容


import re
import json

import requests
from bs4 import BeautifulSoup
import lxml.html
from lxml import etree

result = requests.get('http://example.webscraping.com/places/default/view/Algeria-4')
with open('123.html', 'wb') as f:
    f.write(result.content)
# print(parse_regex(result.text))
test_data = """
        <div>
            <ul>
                 <li class="item-0"><a href="link1.html" id="places_neighbours__row">9,596,960first item</a></li>
                 <li class="item-1"><a href="link2.html">second item</a></li>
                 <li class="item-inactive"><a href="link3.html">third item</a></li>
                 <li class="item-1"><a href="link4.html" id="places_neighbours__row">fourth item</a></li>
                 <li class="item-0"><a href="link5.html">fifth item</a></li>
                 <li class="good-0"><a href="link5.html">fifth item</a></li>
             </ul>
             <book>
                    <title lang="aaengbb">Harry Potter</title>
                    <price id="places_neighbours__row">29.99</price>
            </book>
            <book>
                <title lang="zh">Learning XML</title>
                <price>39.95</price>
            </book>
            <book>
                <title>Python</title>
                <price>40</price>
            </book>
         </div>
        """
# //div/ul/li/a[@id]  选取a标签中带有id属性的标签
# //div/ul/li/a 选取所有a标签
# //div/ul/li[2]/a
"""
/ 从根标签开始  必须具有严格的父子关系
// 从当前标签  后续节点含有即可选出
* 通配符 选择所有
//div/book[1]/title  选择div下第一个book标签的title标签
//div/book[1]/tittle[@lang="zh"] 选择div下第一个book标签的title标签并且内容是zh的title标签
//div/book/title //book/title //title 具有相同结果 只不过选取路径不一样
//book/title/@* 将title所有的属性值选出来
//book/title/text() 将title的内容选择出来,使用内置函数
//a[@href="link1.html" and @id="places_neighbours_row"]
//div/book/[last()]/title/text() 将最后一个book元素选出
//div/book[price > 39]/title/text() 将book子标签price数值大于39的选择出来
//li[starts-with(@class,'item')] 将class属性前缀是item的选出来
//title[contains(@lang,"eng")]将title属性lang含有eng关键字的标签选出

"""
html = lxml.html.fromstring(test_data)  # 加载任意一个字符串
html_data = html.xpath('//title[contains(@lang,"eng")]')  # xpath 查找路径
# print(dir(html_data[0]))  # 查看html_data有什么功能
print(html_data)
for i in html_data:
    print(i.text)

 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值