如何删除BeautifulSoup中的所有不同脚本标记?

时间:2015-07-18 17:44:27

标签: python html beautifulsoup html-parsing

我从Web链接抓取表格,并希望通过删除所有脚本标记来重建表格。以下是源代码。

arguments

如何删除所有不同的脚本标记?以下面的单元格为例,其中包含标记OrderFulfillment.where(shopper_id: shopper.id, fulfillment_status: [:fulfillment_requested_assignment, :fulfillment_assigned, :fulfillment_shopping]) response = requests.get(url) soup = BeautifulSoup(response.text) table = soup.find('table') for row in table.find_all('tr') : for col in row.find_all('td'): #remove all different script tags #col.replace_with('') #col.decompose() #col.extract() col = col.contents a。< / p>

br

我的预期结果是:

td

2 个答案:

答案 0 :(得分:5)

您在询问get_text()

  

如果您只想要文档或标记的文本部分,则可以使用   get_text()方法。 它返回文档中或文本下方的所有文本   tag,作为单个Unicode字符串

td = soup.find("td")
td.get_text()

请注意,.string会在这种情况下返回None,因为td多个孩子

  

如果标签包含多个内容,则不清楚是什么   .string应该引用,因此.string被定义为None

演示:

>>> from bs4 import BeautifulSoup
>>> 
>>> soup = BeautifulSoup(u"""
... <td><a href="http://www.irit.fr/SC">Signal et Communication</a>
... <br/><a href="http://www.irit.fr/IRT">Ingénierie Réseaux et Télécommunications</a>
... </td>
... """)
>>> 
>>> td = soup.td
>>> print td.string
None
>>> print td.get_text()
Signal et Communication
Ingénierie Réseaux et Télécommunications

答案 1 :(得分:1)

尝试调用col.string。那只会给你文字。