我使用BeautifulSoup从超文本标记语言页面中提取一些数据。我所做的是:
list=soup.find_all('td', {'align': 'left', 'valign': None})
print list[0]它给了我
<td align="left">\n<h3>Name XYZ</h3>\n CTS SANSKRUTI LAYOUT, 90 FEET RAOD, THAKUR COMPLEX, <br/>KANDIVALI EAST,<br/>Mumbai MAHARASHTRA-400101</td>但是我想要的输出如下:
Name: Name XYZ, Add: CTS SANSKRUTI LAYOUT, 90 FEET RAOD, THAKUR COMPLEX, KANDIVALI EAST, Mumbai MAHARASHTRA-400101我该怎么办?
发布于 2016-12-07 16:50:06
find_all将返回一个标记列表,因此当您访问列表list[0]中的第一个项目时,它将返回第一个标记,就像您输出的那样
如果您想为标签提取文本,您可以使用tag.text
list[0].text发布于 2016-12-10 01:41:01
实际上,我认为有两种方法可以做到这一点,这取决于您正在寻找的是什么。
我不确定您想要的输出前面的"name“和"add”字符串是否是拼写错误,所以我看到了两种可能的方法:
find_all方法获得的list_tags的每个标记下的所有文本,而不需要进行任何操作,如分隔每个单词,则转到get_text()方法。有了它,你可以选择一个简单的列表理解,比如:
>>> simple_uni_text = [tag.get_text() for tag in list_tags]
>>> simple_uni_text
[u'\nName XYZ\n CTS SANSKRUTI LAYOUT, 90 FEET RAOD, THAKUR COMPLEX, KANDIVALI EAST,Mumbai MAHARASHTRA-400101', u'\nName ABC\n DUT WITHOUT LAYIN, 45 FOOT AODR, RUKTHA SIMPLE, BOMBAY WEST,BOMBAY RASHTRAMAHA-400101']
>>> len(simple_uni_text)
>>> 2 # I pretended the list_tags to have two tags, so it generated a list of length two!stripped_strings生成器。这可能是一种更棘手的方法。但你可以提高精确度。
>>> uni_stripped_words = []
>>> for tag in list_tags:
for string in tag.stripped_strings:
uni_stripped_words.append(string)
>>> uni_stripped_words
[u'Name XYZ', u'CTS SANSKRUTI LAYOUT, 90 FEET RAOD, THAKUR COMPLEX,', u'KANDIVALI EAST,', u'Mumbai MAHARASHTRA-400101', u'Name ABC', u'DUT WITHOUT LAYIN, 45 FOOT AODR, RUKTHA SIMPLE,', u'BOMBAY WEST,', u'BOMBAY RASHTRAMAHA-400101']
>>> len(uni_stripped_words)
8 在这里,您将在list_tags的每个teag下找到的每个字符串与另一个字符串分开。因此,如果您确实想在文本前面添加以下"Name“和" add”,那么它可以更好地符合您的需求。
>>> for word in uni_stripped_words:
print word
Name XYZ
CTS SANSKRUTI LAYOUT, 90 FEET RAOD, THAKUR COMPLEX,
KANDIVALI EAST,
Mumbai MAHARASHTRA-400101
Name ABC
DUT WITHOUT LAYIN, 45 FOOT AODR, RUKTHA SIMPLE,
BOMBAY WEST,
BOMBAY RASHTRAMAHA-400101 # Sorry for the weird text example haha然而,我发现第二种方法不太容易控制。例如,有时会有意想不到的字符。就个人而言,我更喜欢在将输出写到文件时进行连接!
无论如何,在这两种情况下,不要忘记结果列表将包含unicode类型的提取文本。
干杯
https://stackoverflow.com/questions/41012172
复制相似问题