设置
我需要获得this Wikipedia page上所有NUTS3区域的总体数据。你知道吗
我已经获得了每个NUTS3区域的所有url,并将让Selenium在它们上面循环,以获得每个区域在其页面上显示的人口数量。你知道吗
也就是说,对于每个区域,我需要在其infobox geography vcard
元素中显示总体。例如,对于this region,总体将是591680
。你知道吗
代码
在写循环之前,我想得到一个区域的人口
url = 'https://en.wikipedia.org/wiki/Arcadia'
browser.get(url)
vcard_element = browser.find_element_by_css_selector('#mw-content-text > div > table.infobox.geography.vcard').find_element_by_xpath('tbody')
for row in vcard_element.find_elements_by_xpath('tr'):
try:
if 'Population' in row.find_element_by_xpath('th').text:
print(row.find_element_by_xpath('th').text)
except Exception:
pass
问题
代码起作用了。也就是说,它打印包含单词“Population”的行。你知道吗
问题:如何告诉Selenium获取下一行–包含实际人口数的行?你知道吗
虽然您当然可以使用selenium来实现这一点,但我个人建议使用requests和lxml,因为它们的重量比selenium轻得多,而且也可以很好地完成工作。我发现以下方法适用于我测试的几个地区:
从本质上说html.fromstring().xpath()正在获取路径上
infobox geography vcard
表中的所有行。下一个try-catch只尝试定位其内部文本为th
的Population
,然后从下一个td
中提取文本(这是总体数)。你知道吗希望这是有帮助的,即使它不是像你所要求的那样!如果您想重新创建浏览器行为或检查javascript元素,通常会使用Selenium。你当然也可以在这里用。你知道吗
使用
./following::tr[1]
或./following-sibling::tr[1]
控制台上的输出:
相关问题 更多 >
编程相关推荐