美丽的汤臭虫?

时间:2012-07-26 17:56:11

标签: python beautifulsoup

我有下一个代码:

for table in soup.findAll("table","tableData"):
    for row in table.findAll("tr"):
        data = row.findAll("td")
        url = data[0].a
        print type(url)

我得到下一个输出:

<class 'bs4.element.Tag'>

这意味着,该url是Tag类的对象,我可以从这些对象获得属性。 但如果我将print type(url)替换为print url['href'],我会得到下一个追溯

Traceback (most recent call last):
File "baseCreator.py", line 57, in <module>
    createStoresTable()
File "baseCreator.py", line 46, in createStoresTable
    print url['href']
TypeError: 'NoneType' object has no attribute '__getitem__'

有什么问题?以及如何获得href属性的值。

1 个答案:

答案 0 :(得分:2)

我喜欢BeautifulSoup,但我个人更喜欢lxml.html(因为不太古怪 HTML)因为能够使用XPath。

import lxml.html
page = lxml.html.parse('http://somesite.tld')
print page.xpath('//tr/td/a/@href')

虽然取决于结构,但可能需要实现某种形式的“轴”。

您还可以使用elementsoup作为解析器 - 详情请见http://lxml.de/elementsoup.html