在标签之外获取文本

时间:2015-02-07 23:22:22

标签: python html python-3.x beautifulsoup html-parsing

我正试图从一个上帝可怕的网站上获取一些文字。 这是我难倒的部分:

    <tr><td valign="top">
                    <br>
                    <b>AGFA&nbsp;ACCUSET,&nbsp;<i>1994</i></b>&nbsp;<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:原来我使用了错误的解析器。有关详细信息,请参见下文。

1 个答案:

答案 0 :(得分:2)

我没有看到get_text()的问题:

>>> from bs4 import BeautifulSoup
>>> 
>>> data = """
... <tr><td valign="top">
...                     <br>
...                     <b>AGFA&nbsp;ACCUSET,&nbsp;<i>1994</i></b>&nbsp;<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