ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python – lxml是否有可能以不区分大小写的方式工作?

2019-09-29 06:57:18  阅读:212  来源: 互联网

标签:python css-selectors case-insensitive lxml case-sensitive


我正在尝试从任意网站中删除META关键字和描述标签.我绝对无法控制所说的网站,所以必须采取我给的.它们有标签和属性的各种外壳,这意味着我需要不区分大小写.我无法相信lxml作者在排除对其库的大部分使用时坚持完全强制标准兼容性是顽固的.

我希望能够说doc.cssselect(‘meta [name = description]’)(或一些XPath等价物),但这不会捕获< meta name =“Description”Content =“...”>标签由于其他资本D.

我目前正在使用它作为一种解决方法,但它太可怕了!

for meta in doc.cssselect('meta'):
    name = meta.get('name')
    content = meta.get('content')

    if name and content:
        if name.lower() == 'keywords':
            keywords = content
        if name.lower() == 'description':
            description = content

似乎标签名称meta不区分大小写,但属性不是.更令人讨厌的元也是区分大小写的!

解决方法:

属性值必须区分大小写.

您可以使用任意正则表达式来选择元素:

#!/usr/bin/env python
from lxml import html

doc = html.fromstring('''
    <meta name="Description">
    <meta name="description">
    <META name="description">
    <meta NAME="description">
''')
for meta in doc.xpath('//meta[re:test(@name, "^description$", "i")]',
                      namespaces={"re": "http://exslt.org/regular-expressions"}):
    print html.tostring(meta, pretty_print=True),

输出:

<meta name="Description">
<meta name="description">
<meta name="description">
<meta name="description">

标签:python,css-selectors,case-insensitive,lxml,case-sensitive
来源: https://codeday.me/bug/20190929/1830787.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有