我获得了HTML页面的链接。如何使用其绝对XPath打开它并获取特定元素的内容。
from lxml import html
import requests
page = requests.get('http://www.professorpaddle.com/rivers/riverlist.asp')
tree = html.fromstring(page.content)
table_data=[]
temp_dict={}
temp = tree.xpath('//a[@class="pathm"]')
for i in temp:
link=i.attrib.get('href')
link="http://www.professorpaddle.com/rivers/"+link
temp_dict['name']=i.text
temp_dict['link']=link
print(link)
temp_page=requests.get(link)
temp_tree=html.fromstring(temp_page.content)
x=temp_tree.xpath('/html/body/element/table/tbody/tr[2]/td/table/tbody/tr/td/table[1]/tbody/tr[2]/td[3]/table/tbody/tr[3]/td[2]/font')
print(x)
break
答案 0 :(得分:1)
xpath似乎无法找到tbody的。我还试图简化xpath搜索字符串,使自己更容易。当我这样做的时候,在我发现其中一个类有两个拼写之前不久。这是我对一页的看法。
>>> fontItems = tree.xpath('..//table[@class="tableBorder" or @class="tableborder"][1]/tr/td/font[@class="path"]')
>>> len(fontItems)
12
>>> for item in fontItems:
... list(item.itertext())
...
['GPS/GIS']
['Maps']
['Put In Longitude : ']
['-121.29268']
['Put In Latitude : ']
['47.8034515']
['Take Out Longitude : ']
['-121.33998']
['Take Out Latitude : ']
['47.7137985']
['County : ']
['Snohomish']
几乎忘了,我更喜欢在或上使用匹配,但显然此实现中的xpath并不提供正则表达式。
补充,回应评论:
M-1