也获取标签外的文本
Get Text outside of tags as well
我正试图从一个非常糟糕的网站中获取一些文本。
这是我被难住的部分:
<tr><td valign="top">
<br>
<b>AGFA ACCUSET, <i>1994</i></b> <font color=grey>(46965)</font><br>
<br>
<b>Equipements : </b><br>AGFA 9800<br>
WITH RIP VIPER N°2<br>
FILM PROCESSOR GLUNZ AND JENSEN ML35 n°26498<br>
(LAIZE 450/600mm)<br>
Spectraset 2200<br>
<b>Availability : </b>IMMEDIATE<br></td><tr>
我需要的是里面所有的文字,所以
AGFA ACCUSET, 1994 (46965)
Equipements : AGFA 9800
WITH RIP VIPER N°2
FILM PROCESSOR GLUNZ AND JENSEN ML35 n°26498
(LAIZE 450/600mm)
Spectraset 2200
Availability : IMMEDIATE
如您所见,一些文本在 <b>
标签内,一些在 前面 的 <br>
标签内。如果我使用 soup.getText(),我会得到标签之外的文本,但我也会得到很多我不想要的其他文本,所以这实际上不起作用。
编辑: This 是相关站点的 link。
EDIT2: 结果我用错了解析器。请参阅下文了解更多信息。
我没有发现 get_text()
有问题:
>>> from bs4 import BeautifulSoup
>>>
>>> data = """
... <tr><td valign="top">
... <br>
... <b>AGFA ACCUSET, <i>1994</i></b> <font color=grey>(46965)</font><br>
... <br>
... <b>Equipements : </b><br>AGFA 9800<br>
... WITH RIP VIPER N°2<br>
... FILM PROCESSOR GLUNZ AND JENSEN ML35 n°26498<br>
... (LAIZE 450/600mm)<br>
... Spectraset 2200<br>
... <b>Availability : </b>IMMEDIATE<br></td><tr>
... """
>>>
>>> soup = BeautifulSoup(data)
>>> print(soup.tr.td.get_text())
AGFA ACCUSET, 1994 (46965)
Equipements : AGFA 9800
WITH RIP VIPER N°2
FILM PROCESSOR GLUNZ AND JENSEN ML35 n°26498
(LAIZE 450/600mm)
Spectraset 2200
Availability : IMMEDIATE
这是使用您分享给link的演示:
>>> from bs4 import BeautifulSoup
>>> import requests
>>>
>>> url = "http://agec.de/index.asp?a=1&lg=de&macnum=46965"
>>>
>>> response = requests.get(url)
>>> soup = BeautifulSoup(response.content)
>>>
>>> soup.select('section#main_section aside#machine_detail form > table > tr')[1].get_text()
AGFA ACCUSET, 1994 (46965)
Equipements : AGFA 9800
WITH RIP VIPER N°2
FILM PROCESSOR GLUNZ AND JENSEN ML35 n°26498
(LAIZE 450/600mm)
Spectraset 2200
Availability : IMMEDIATE
我正试图从一个非常糟糕的网站中获取一些文本。 这是我被难住的部分:
<tr><td valign="top">
<br>
<b>AGFA ACCUSET, <i>1994</i></b> <font color=grey>(46965)</font><br>
<br>
<b>Equipements : </b><br>AGFA 9800<br>
WITH RIP VIPER N°2<br>
FILM PROCESSOR GLUNZ AND JENSEN ML35 n°26498<br>
(LAIZE 450/600mm)<br>
Spectraset 2200<br>
<b>Availability : </b>IMMEDIATE<br></td><tr>
我需要的是里面所有的文字,所以
AGFA ACCUSET, 1994 (46965)
Equipements : AGFA 9800
WITH RIP VIPER N°2
FILM PROCESSOR GLUNZ AND JENSEN ML35 n°26498
(LAIZE 450/600mm)
Spectraset 2200
Availability : IMMEDIATE
如您所见,一些文本在 <b>
标签内,一些在 前面 的 <br>
标签内。如果我使用 soup.getText(),我会得到标签之外的文本,但我也会得到很多我不想要的其他文本,所以这实际上不起作用。
编辑: This 是相关站点的 link。
EDIT2: 结果我用错了解析器。请参阅下文了解更多信息。
我没有发现 get_text()
有问题:
>>> from bs4 import BeautifulSoup
>>>
>>> data = """
... <tr><td valign="top">
... <br>
... <b>AGFA ACCUSET, <i>1994</i></b> <font color=grey>(46965)</font><br>
... <br>
... <b>Equipements : </b><br>AGFA 9800<br>
... WITH RIP VIPER N°2<br>
... FILM PROCESSOR GLUNZ AND JENSEN ML35 n°26498<br>
... (LAIZE 450/600mm)<br>
... Spectraset 2200<br>
... <b>Availability : </b>IMMEDIATE<br></td><tr>
... """
>>>
>>> soup = BeautifulSoup(data)
>>> print(soup.tr.td.get_text())
AGFA ACCUSET, 1994 (46965)
Equipements : AGFA 9800
WITH RIP VIPER N°2
FILM PROCESSOR GLUNZ AND JENSEN ML35 n°26498
(LAIZE 450/600mm)
Spectraset 2200
Availability : IMMEDIATE
这是使用您分享给link的演示:
>>> from bs4 import BeautifulSoup
>>> import requests
>>>
>>> url = "http://agec.de/index.asp?a=1&lg=de&macnum=46965"
>>>
>>> response = requests.get(url)
>>> soup = BeautifulSoup(response.content)
>>>
>>> soup.select('section#main_section aside#machine_detail form > table > tr')[1].get_text()
AGFA ACCUSET, 1994 (46965)
Equipements : AGFA 9800
WITH RIP VIPER N°2
FILM PROCESSOR GLUNZ AND JENSEN ML35 n°26498
(LAIZE 450/600mm)
Spectraset 2200
Availability : IMMEDIATE