在BeautifulSoup / Python中选择具有特定属性的标签

西蒙·基利
import os
from bs4 import BeautifulSoup

do = dir_with_original_files = 'C:\Users\ADMIN\Desktop\\new_folder'
dm = dir_with_modified_files = 'C:\Users\ADMIN\Desktop\\new_folder\\test'

for root, dirs, files in os.walk(do):
    for f in files:
        print f.title()
        if f.endswith('~'): #you don't want to process backups
            continue
        original_file = os.path.join(root, f)
        mf = f.split('.')
        mf = ''.join(mf[:-1])+'_mod.'+mf[-1] # you can keep the same name 
                                             # if you omit the last two lines.
                                             # They are in separate directories
                                             # anyway. In that case, mf = f
        modified_file = os.path.join(dm, mf)
        with open(original_file, 'r') as orig_f, \
            open(modified_file, 'w') as modi_f:
            soup = BeautifulSoup(orig_f.read())

            for t in soup.find_all('td', class_='findThisClass'):
                for child in t.find_all("font"):
                    if child.string is not None:
                        child.string.wrap(soup.new_tag('h2'))
            for t in soup.find_all('table', class_='tableClass'):
                t.extract()
            # This is where you create your new modified file.
            modi_f.write(soup.prettify().encode(soup.original_encoding)) 

这段代码将找到<font>该类中的所有标签,<td class=findThisClass>并在这些字体标签中添加一个。

我想做的是找到所有带有此标记的html:

<font color="#333333" face="Verdana" size="3" style="font-weight: bold; background-color: rgb(255, 255, 255);">

做到这一点的最佳方法是:

(a)我确信字体将始终遵循相同的形式(所有相同顺序的属性,带有该字符串的ctrl + f都将找到我想要的所有匹配项):

<font color="#333333" face="Verdana" size="3" style="font-weight: bold; background-color: rgb(255, 255, 255);">

(b)如果我希望它工作,即使属性顺序已改变,例如:

<font color="#333333" face="Verdana" size="3" style="font-weight: bold; background-color: rgb(255, 255, 255);">

还要改变

<font face="Verdana" color="#333333" size="3" style="font-weight: bold; background-color: rgb(255, 255, 255);">

非常感谢。

ec

attrs字典提供特定的值:

t.find_all("font", attrs={'face': 'Verdana', 'color': '#333333', 'size': '3', 'style': 'font-weight: bold; background-color: rgb(255, 255, 255);'})

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在BeautifulSoup中选择具有多个零件类的标签

来自分类Dev

使用BeautifulSoup定位具有特定属性的<a>

来自分类Dev

使用 BeautifulSoup 从表中选择特定值

来自分类Dev

如何选择一些带有属性的标签(BeautifulSoup,Python)

来自分类Dev

使用 Python beautifulsoup 选择除特定标签之外的所有内容

来自分类Dev

当多个div具有相同的类名且没有id标签时,如何使用BeautifulSoup选择特定的div?

来自分类Dev

使用Python中的BeautifulSoup获取具有特定类属性的链接的href文本

来自分类Dev

在beautifulsoup / python中查找带有特定文本的标签的索引

来自分类Dev

Python BeautifulSoup仅选择顶部标签

来自分类Dev

Python Beautifulsoup 标签选择 - 复杂问题

来自分类Dev

在BeautifulSoup中选择除具有某些类的div外的所有div

来自分类Dev

在Python BeautifulSoup中提取具有href属性的链接

来自分类Dev

Python BeautifulSoup没有标签并返回空

来自分类Dev

没有类或标签的BeautifulSoup

来自分类Dev

BeautifulSoup:获取具有特定属性的元素,而与属性值无关

来自分类Dev

使用BeautifulSoup查找具有两种特定样式的标签

来自分类Dev

从Beautifulsoup标签提取src

来自分类Dev

BeautifulSoup找不到标签

来自分类Dev

BeautifulSoup删除嵌套标签

来自分类Dev

BeautifulSoup父标签

来自分类Dev

BeautifulSoup移除标签

来自分类Dev

使用BeautifulSoup提取<a>标签

来自分类Dev

Beautifulsoup找不到标签

来自分类Dev

BeautifulSoup <small>标签

来自分类Dev

从Beautifulsoup标签提取src

来自分类Dev

Beautifulsoup 中的复合标签

来自分类Dev

BeautifulSoup 标签替换

来自分类Dev

BeautifulSoup 找不到标签

来自分类Dev

BeautifulSoup:搜索多个标签

Related 相关文章

热门标签

归档