我正试图从一个上帝可怕的网站上获取一些文字。 这是我难倒的部分:
<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)
设备:AGFA 9800
使用RIP VIPER N°2
FILM PROCESSOR GLUNZ和JENSEN ML35 n°26498
(LAIZE 450 / 600mm)
Spectraset 2200
可用性:IMMEDIATE
如您所见,部分文字位于<b>
- 标记内,部分文字位于<br>
- 标记的前面。如果我使用了soup.getText(),我会在标签之外得到Text,但是我也会得到很多其他我不想要的文本,所以这不起作用。
编辑: This是相关网站的链接。
EDIT2:原来我使用了错误的解析器。有关详细信息,请参见下文。
答案 0 :(得分:2)
我没有看到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
以下是使用您共享的链接的演示:
>>> 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