【发布时间】:2016-09-09 09:26:58
【问题描述】:
我试图让BeautifulSoup通过抓取获取所有位置名称的列表,我曾经使用以下方法:
locs = LOOPED.findAll("td", {"class": "max use"})
以前适用于 HTML
<td class="max use" style="">London</td>
但是 HTML 已更改为,不再返回 London
<td class="max use" style="">
<div class="notranslate">
<span><a data-title="View Location" href="/location/uk/gb/london/">London</a></span> <span class="extra hidden">(DEFAULT)</span>
</div>
</td>
编辑:如果我打印 locs,我会得到如下列表:
<td class="max use" style="">\n<div class="notranslate">\n<span><a data-title="View Location" href="/location/uk/gb/london/">London</a></span> <span class="extra hidden">(DEFAULT)</span>\n</div>\n</td>, <td class="max use" style="">\n<div class="notranslate">\n<span><a data-title="View Location" href="/location/uk/gb/manchester/">Manchester</a></span> <span class="extra hidden">(DEFAULT)</span>\n</div>\n</td>, <td class="max use" style="">\n<div class="notranslate">\n<span><a data-title="View Location" href="/location/uk/gb/liverpool/">Liverpool</a></span> <span class="extra hidden">(NA)</span>\n</div>\n</td>]
你可以看到有 3 个不同的位置,从上面我希望看到[London, Manchester, Liverpool] 的列表
我认为我应该使用类似的东西:
locs = LOOPED.findAll("td", {"class": "max use"})
locs = locs.findAll('a')[1]
print locs.text
但这只会与
AttributeError: 'ResultSet' 对象没有属性 'findAll'
我不知道如何让Beautifulsoup 重新搜索超链接文本...
【问题讨论】:
-
是不是因为你的'a'不是直接在'td'下面,我猜你需要先通过'div'然后'span'。
-
@AvinashRaj 是的,如果我在
locs = LOOPED.findAll("td", {"class": "max use"})之后打印locs,它会打印在div和span下具有链接的HTML。 -
嘿,这里的问题是
locs是list。如果需要来自locs中每个位置的文本,则必须遍历locs并打印每个位置的文本。
标签: python python-2.7 beautifulsoup