美丽的汤 - 找不到标签

时间:2012-03-11 03:34:28

标签: python beautifulsoup

页面为:http://item.taobao.com/item.htm?id=13015989524
你可以看到它的源代码。

在其源代码中存在以下代码

<a href="http://item.taobao.com/item.htm?id=13015989524" target="_blank">

但是当我使用BeautifulSoup阅读源代码并执行以下

soup.findAll('a', href="http://item.taobao.com/item.htm?id=13015989524")

它返回[]为空。它返回什么'[]'?

2 个答案:

答案 0 :(得分:1)

据我所知,您要查找的<a>标记位于<textarea>标记内。 BS不会将<textarea>的内容解析为HTML,这是正确的,因为<textarea>不应包含HTML。简而言之,该页面正在做一些粗略的事情。

如果你真的需要这样做,你可能会“欺骗”并再次解析<textarea>的内容并在其中搜索:

import urllib
from BeautifulSoup import BeautifulSoup as BS

soup = BS(urllib.urlopen("http://item.taobao.com/item.htm?id=13015989524"))

a = []
for textarea in soup.findAll("textarea"):
    textsoup = BS(textarea.text)  # parse the contents as html
    a.extend(textsoup.findAll("a", attrs={"href":"http://item.taobao.com/item.htm?id=13015989524"}))

for tag in a:
    print tag

# outputs
# <a href="http://item.taobao.com/item.htm?id=13015989524" target="_blank"><img ...
# <a href="http://item.taobao.com/item.htm?id=13015989524" title="901 ...

答案 1 :(得分:0)

使用字典存储属性:

soup.findAll('a', {
  'href': "http://item.taobao.com/item.htm?id=13015989524"
})