Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Selenium Webdriver在元素中查找元素_Python_Selenium_Web Scraping_Webdriver - Fatal编程技术网

Python 使用Selenium Webdriver在元素中查找元素

Python 使用Selenium Webdriver在元素中查找元素,python,selenium,web-scraping,webdriver,Python,Selenium,Web Scraping,Webdriver,我正在抓取一个网站,它有一个使用JavaScript生成的足球比赛列表。我写了下面这行代码,创建了页面上所有游戏元素的列表: list = browser.find_elements_by_xpath('//*[@data-sportid="1"]') 如果我写 for game in list: print game.text 它打印每个游戏中包含的所有文本字段(主队名称、客队名称等) 然而,循环 for game in list: print game.find_elem

我正在抓取一个网站,它有一个使用JavaScript生成的足球比赛列表。我写了下面这行代码,创建了页面上所有游戏元素的列表:

list = browser.find_elements_by_xpath('//*[@data-sportid="1"]')
如果我写

for game in list:
    print game.text
它打印每个游戏中包含的所有文本字段(主队名称、客队名称等)

然而,循环

for game in list:
    print game.find_element_by_xpath('//*[@class="home-team"]').text
为循环的每个迭代在页面中打印第一个主队的名称

似乎
game.find_element\u by_xpath
正在搜索整个页面,而不仅仅是这个
game
元素,因此它一直在页面上返回第一个主队名称

如何在列表的每个项目中搜索子元素

编辑


@Justin Bartz谢谢你

您使用的是XPath
/*[@class=“home team”]
,但无论您使用的是哪个父元素,
/
都会告诉XPath搜索整个文档,而不仅仅是父元素的子元素。 使用XPath
//*[@class=“home team”]
和前斜杠前面的句点(即.//),它告诉它只在当前元素下搜索

希望这个扩展的解释有助于理解

   driver = webdriver.Chrome()
    driver.get("https://www.betfair.com/exchange/football/coupon?id=2")
    list = driver.find_elements_by_xpath('//*[@data-sportid="1"]')
    for game in list:
        print(game.find_element_by_css_selector('span.home-team').text)

or

    driver = webdriver.Chrome()
    driver.get("https://www.betfair.com/exchange/football/coupon?id=2")
    list = driver.find_elements_by_xpath('//*[@data-sportid="1"]')
    for game in list:
        print(game.find_element_by_xpath('.//span[@class="home-team"]').text)

这是为了给巴尼的答案添加一个解释

您使用的是xpath
/*[@class=“home team”]
,但无论您使用的是哪个父元素,
/
都会告诉xpath搜索整个文档,而不仅仅是父元素的子元素。
使用xpath
//*[@class=“home team”]
和前斜杠前面的句点(即
//
),它告诉它只在当前元素下搜索


希望这个扩展的解释有助于理解

你能给我们这个网站吗?\@nooby将它添加到问题中,为帮助消除StackOverflow是免费代码编写服务的误解而干杯。一种处理纯代码答案的全新方法。(为了绝对清楚,这里没有有意的讽刺或愤世嫉俗。)贾斯汀回答的解释是了解发生了什么并停止再次犯同样错误的关键。这个问题应该包含在这个答案中。我一直在整个互联网上搜索如何解决这个问题。答案是xpath开头的单个“.”。谢谢你,巴尼!