Selenium - 从无序列表中获取元素

时间:2016-12-27 12:01:47

标签: html selenium

我对html不太熟悉,但想用selenium构建一个简单的webscraper。我正在尝试访问reddit.com上的评论,并且在实际挑选每个元素时遇到了很多麻烦。我正在看的部分在这里: enter image description here

我已经尝试了很多东西甚至在这里列出,没有一个有效。令我困惑的一件事是我使用FirePath复制Xpath,它仍然无法正常工作。 (它回来了空)。吐出的Xpath是.//*[@id='thing_t3_5khd75']/div[2]/ul/li[1]/a

1 个答案:

答案 0 :(得分:1)

页面顶部的几个帖子都是隐藏的,因此如果使用element.text,您将获得空字符串。另外,我建议您不要使用FirePath,而是创建your own XPath instead以使您的选择器更灵活

要获取您可以使用的实际值(我猜您在查看个人资料时使用Python :)):

posts = driver.find_elements_by_xpath('//a[@class="bylink comments may-blank"]')
comments = {}
for post in posts:
    comments[post.get_attribute('href')] = post.get_attribute('innerHTML')

comments的输出类似于

{'https://www.reddit.com/r/science/comments/5kfw6w/cheetahs_heading_towards_extinction_as_population/': '1904 comments',
 'https://www.reddit.com/r/pics/comments/5kh5q4/a_cutting_board_made_of_walnut_white_oak_maple/': '217 comments',...}