我用selenium进行了搜索查询。之后我得到了多个结果。现在的问题是,只有一个环节对,怎么了我可以从多个结果中选择链接吗?并从结果中分析数据。 我有一个列表,每次进行搜索查询,结果有时可能会改变10或15。在
以下代码将始终选择第一个结果,但在本例中,我正在寻找4个链接:
代码:
from selenium import webdriver
from bs4 import BeautifulSoup
import time
driver = webdriver.Chrome()
driver.get("url")
#time.sleep(5)
username = driver.find_element_by_name("p_name")
#time.sleep(1)
username.send_keys("xxxxx)
#username.clear()
driver.find_element_by_xpath("html/body/form/table[6]/tbody/tr/td[2]/input").click()
driver.find_element_by_xpath("html/body/form/table[3]/tbody/tr[2]/td[4]/a").click()
html = driver.page_source
soup =BeautifulSoup(html)
for tag in soup.find_all('table'):
print tag.text
我想你可以用
而不是
^{pr2}$这将遵循完全匹配,并将带你到下一页。在
你知道搜索结果页面中条目的一般形式,也就是说,它们大写,没有特殊字符。假设您有这样一个搜索页面,您可以使用这些知识和
selenium
来搜索包含所需内容的文本,使用xpath表达式。在我只是简单地把整行的文本都删除了。您需要从父元素
tr
中提取实际需要的文本项。在PS:在https://gist.github.com/LeCoupa/8c305ec8c713aad07b14有一个很好的xpath表达式页面。在
答案是使用只返回一个结果的更好的选择器。我更喜欢CSS选择器,但是如果您愿意的话,XPath的过程基本上是相同的。在
要在Chrome中获取CSS选择器:
选择“Copy”>;“Copy selector”(或者您也可以在这里获得XPath)
在driver.find_element_css_选择器(“body>;form>;表:第n个孩子(4) >;tbody>;tr:nth child(2)>;td:nth child(2)>;input[type='text']')。sendKeys(“Timothy”)
在driver.find_element_css_选择器(“body>;form>;表:第n个孩子(5) >;tbody>;tr>;td:nth child(2)>;input[type='text']')。sendKeys(“Cope”)
相关问题 更多 >
编程相关推荐