当前位置: 首页 > 面试题库 >

使用BeautifulSoup获取标签样式

邓欣可
2023-03-14
问题内容

我正在抓取页面,并从该页面上的表中获取所有<tr>元素,如下所示:

r = requests.get("http://lol.esportswikis.com/wiki/G2_Esports/Match_History")
s = BeautifulSoup(r.content, "lxml")
tr = s.find_all("table", class_="wikitable sortable")[0].find_all("tr")[3:]

print tr[0]

输出:

<tr style="background-color:#C6EFCE"><td>...</td> ... <td>...</td></tr>

现在,我试图获取<tr>标签的样式,但是我不知道如何。例如,如果我这样做:

for item in tr[0]:
    print item

它显然只是打印<td> ... </td>东西。我想我大概可以做这样的事情print tr[0].something,比如tr[0].tag,但一切到目前为止,我已经尝试并没有带来我想要的东西。


问题答案:

只需使用以下属性即可访问tag["attribute"]

In [28]: soup = BeautifulSoup('<tr style="pretty"></tr>', 'html.parser')

In [29]: print soup.find("tr")["style"]
pretty

如果您只想要具有样式属性an的tr标记来获取全部标记:

trs = s.find("table", class_="example-table").find_all("tr", style=True)

for tr in trs:
    print(tr["style"])

或使用CSS选择器:

trs = s.select("table.example-table tr[style]")

for tr in trs:
    print(tr["style"])

使用您的实际网址:

In [41]: r = requests.get("http://lol.esportswikis.com/wiki/G2_Esports/Match_History")

In [42]: s = BeautifulSoup(r.content, "lxml")

In [43]: trs = s.select("table.wikitable.sortable tr[style]")

In [44]:

In [44]: for tr in trs:
   ....:         print(tr["style"])
   ....:     
background-color:#C6EFCE
background-color:#C6EFCE
background-color:#FFC7CE
background-color:#C6EFCE
background-color:#C6EFCE
background-color:#C6EFCE
background-color:#C6EFCE
background-color:#C6EFCE
background-color:#FFC7CE
background-color:#FFC7CE
background-color:#FFC7CE
background-color:#C6EFCE
background-color:#FFC7CE
background-color:#C6EFCE
background-color:#FFC7CE
background-color:#FFC7CE
background-color:#FFC7CE
background-color:#FFC7CE
background-color:#C6EFCE
background-color:#C6EFCE
background-color:#FFC7CE
background-color:#C6EFCE
background-color:#C6EFCE
background-color:#C6EFCE
background-color:#FFC7CE
background-color:#C6EFCE
background-color:#C6EFCE
background-color:#C6EFCE
background-color:#C6EFCE
background-color:#C6EFCE
background-color:#C6EFCE
background-color:#C6EFCE
background-color:#C6EFCE
background-color:#FFC7CE
background-color:#C6EFCE
background-color:#FFC7CE
background-color:#C6EFCE
background-color:#C6EFCE
background-color:#C6EFCE
background-color:#C6EFCE
background-color:#FFC7CE
background-color:#C6EFCE
background-color:#C6EFCE
background-color:#C6EFCE
background-color:#FFC7CE
background-color:#FFC7CE
background-color:#C6EFCE
background-color:#FFC7CE
background-color:#FFC7CE
background-color:#C6EFCE


 类似资料:
  • 问题内容: 我正在使用beautifulSoup从网站提取数据。每当您重新加载页面时,该网站上的文本都会更改,因此基本上,我希望能够将重点放在类名上作为静态变量,因为文本是动态的。 它打印出 当页面重新加载,我仍然有重点的领域,但我不知道如何只打印文本(在这种情况下是:4) 一旦解决了这个问题,我还有另一个问题:如果该类包含多个标签,是否有办法获取更多静态数据,以确保它只打印我在搜索的文本,而不是

  • 问题内容: 我可以使用BS轻松遍历通用标签,但是我不知道如何查找特定标签。例如,我怎么能找到所有的出现?BS可以吗? 问题答案: 以下应该工作 有两种搜索标签的方法。 http://www.crummy.com/software/BeautifulSoup/documentation.html 有关更多文本的理解和使用 http://lxml.de/elementsoup.html

  • 问题内容: 使用BeautifulSoup bs4时,如何从HTML标签内部获取文本?当我运行此行时: 我得到这样的标签: 现在我只想获取其中的内部文本,不带标签。怎么做? 问题答案: 使用.text从标记中获取文本。 要不就 要打开文件并使用文本作为名称,请像使用其他任何字符串一样简单地使用它:

  • 问题内容: 我的链接看起来像这样 我想从那里去。我试过了 它输出。 我试过了,但它给了我KeyError。我该如何解决?我的错误是什么? 问题答案: 您可以使用css选择器,使用标题文本拉出所需的跨度: 找到具有包含 RAM 的 title 属性的 跨度 ,等效于在python中说。 或在 re.compile中 使用 find __ 要获取所有数据: 这会给你:

  • 问题内容: 我没有使用python,BeautifulSoup,Selenium等的经验,但是我很想从网站上抓取数据并将其存储为csv文件。我需要的单个数据样本编码如下(一行数据)。 我需要的输出是 我发现这些数据没有ID或类,但仍以通用文本形式出现在网站中。为此,我分别尝试使用BeautifulSoup和Python Selenium,在这两种方法中,我都陷入了无法提取的麻烦,因为我没有看到任何

  • 问题内容: 我正在使用python + BeautifulSoup解析HTML文档。 现在,我需要用替换HTML文档中的所有元素。 如何更改标签名称,而不更改文档中的其他任何内容? 问题答案: 我不知道您的访问方式,但以下内容对我有用: 命令输出为: 如您所见,变成了。文件中的其他内容都没有改变。我正在使用Python 2.6和BeautifulSoup 3.2.0。 如果您有多个,并且想要全部更