我有下一个代码:
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属性的值。
答案 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