我是一个selenium菜鸟,一直在努力用python完成事情。我试图从此页面迭代所有用户评论(“
partial_entry”类)https://www.tripadvisor.com/Airline_Review-d8729164-Reviews-
Cheap-Flights-or560-TAP-
Portugal#REVIEWS
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome("C:\Users\shalini\Downloads\chromedriver_win32\chromedriver.exe")
driver.maximize_window()
url="https://www.tripadvisor.com/Airline_Review-d8729164-Reviews-Cheap-Flights-or560-TAP-Portugal#REVIEWS"
driver.get(url)
for i in driver.find_elements_by_xpath("//div[@class='wrap']"):
print i.find_element(By.XPATH, '//p[@class="partial_entry"]')
print i.text
print "=============================================="
# THIS IF BLOCK IS NECESSARY, I CANT DO AWAY WITH THIS ONE
if i.find_elements(By.CSS_SELECTOR,"#REVIEWS .googleTranslation>.link"):
print "======YES TRANSLATION AVAILABLE========"
即使Im每次都在for循环中选择一个不同的元素,但它会一次又一次地打印相同的元素。(我必须保留最后一个if块,并且不能删除它,因此无论采取什么解决方案,它都必须包含if块)
======编辑===================
即使这样也不起作用(根据http://selenium-python.readthedocs.io/locating-
elements.html,它实际上应该起作用)。我不知道selenium是怎么回事!!!!!
print i.find_element(By.CSS_SELECTOR, 'p.partial_entry')
输出:
NoSuchElementException:
1.i.find_element(By.XPATH, '//p[@class="partial_entry"]')
在第二个循环中进行迭代时,不断重复获取第一个元素的原因是,开始处//
尝试从根/顶层定位元素,
而不是 作为的后代元素i
。这样,p.partial_entry
每次外循环的每次迭代都将继续返回第一个元素。
要搜索i
匹配的后代元素p[@class="partial_entry"]
,xpath应该以开头.//
。这就是点的作用。
2. 对于该行print i.find_element(By.CSS_SELECTOR, 'p.partial_entry')
:
单身汉find_element
返回第一个找到的元素,如果找不到则抛出错误。有些’div.wrap’没有那个后代元素,所以您会得到NoSuchElementException
。
该find_elements
(注意“S”)方法返回元素的列表或一个空列表,如果没有找到,而不是一个错误。
因此,将所有这些放在一起:
>>> for i in driver.find_elements_by_xpath("//div[@class='wrap']"):
... for ent in i.find_elements_by_xpath('.//p[@class="partial_entry"]'):
... print ent.text
... if i.find_elements_by_css_selector('#REVIEWS .googleTranslation>.link'):
... print 'translation available'
... print # output clarity
...
顺便说一句,你为什么要混合find_elements_by_xpath('...')
在一起find_element(By.XPATH, '...')
呢?坚持一种模式。
问题内容: 我创建了一种方法来解组xml(item.xml)文件。但是,如果有多个元素,如何遍历所有元素并使它们显示? 我的代码如下: 如果我的xml是 如何获取所有显示的值?谁能帮我? 问题答案: 我在大学的一些项目中使用过JAXB。据我所记得,您应该返回一个对象(例如),然后查询该对象以检索其中包含的元素。 因此,您的xml应该如下所示: 此时,您的 Java 代码将是:
对于元素间的空格,IE9 及之前版本不会返回文本节点,而其他所有浏览器都会返回文本节点。这样,就导致了在使用childNodes 和firstChild 等属性时的行为不一致。为了弥补这一差异,而同时又保持DOM规范不变,Element Traversal 规范(www.w3.org/TR/ElementTraversal/)新定义了一组属性。 Element Traversal API 为DOM
问题内容: 我想做一个Java游戏。首先,程序要求玩家的数量。之后,它询问他们的名字。我将他们的名字放在ID和分数中。在游戏结束时,我会计算分数,然后将其放在(特定名称的特定分数)中。有谁知道如何做到这一点?这是我的代码: 玩家: 主要: 有谁知道我最后如何打印,例如: 更新: 我主要是这样做的(正如Jigar Joshi建议的那样) 当我将球员的两个名字“ a”和“ b”放进去时,它会显示“分数
输入是一个列表列表。请看下面。文件名是一个列表,包含的名称与列表中的列表数量相同(,,) 每个名称都附加到路径中:-- 程序在遍历列表时遍历包含路径的列表,并打印路径及其文件名。我希望输出是--。然而,我得到了下面的输出。请查看输入后的输出 输入 输出 我希望输出是-- 然而,我得到的结果如下: 我无法理解为什么在遍历列表时不能使用文件名遍历路径列表。我希望这有助于澄清问题。有人能帮忙吗? 我已经
本文向大家介绍如何遍历PHP中的DOM元素?,包括了如何遍历PHP中的DOM元素?的使用技巧和注意事项,需要的朋友参考一下 以下是XML数据(输入)- 遍历DOM对象中的元素。 示例 输出结果 这将产生以下输出- 通过在XML文件中的所有节点上运行foreach循环,可以获取XML文件中的元素。在foreach循环内,将引用主节点的子节点,并且可以访问该子节点的子值。
问题内容: 我已经用BeautifulSoup做到了,但是有点麻烦,我想弄清楚是否可以直接用Selenium做到。 假设我有以下HTML,这些HTML在页面源中使用相同的元素但内容不同重复多次: 我需要建立一个字典,每个人的条目如下: 通过执行以下操作,我可以轻松地让Selenium生成每个顶级元素的内容列表: 但是,我无法遍历列表,因为上述方法无法将范围/源范围缩小到该元素的内容。 如果我尝试执