【问题标题】:Python Selenium cant recognize the search result from googlePython Selenium 无法识别来自 google 的搜索结果
【发布时间】:2018-09-21 18:40:29
【问题描述】:

嘿,我看了 2 到 3 个小时并进行了测试,找不到任何似乎对我有帮助的东西。 我希望 python 类型到谷歌搜索栏并复制结果。

<div id="resultStats">Ungefähr 4.440.000 Ergebnisse<nobr> 
#that resultstats the text i want to copy the text which is inside ><

代码:

test = webdriver.Chrome('.\chromedriver.exe')
test.get('https://www.google.de')
test.find_element_by_id('lst-ib').send_keys('test123123')
webdriver.ActionChains(test).send_keys(Keys.ENTER).perform()
test.find_element_by_xpath('//*[@id="resultStats"]/text()').send_keys(Keys.CONTROL + 'v')

print(test)

错误:

DevTools listening on ws://127.0.0.1:12366/devtools/browser/cc7779e1-c661-4adc-91e4-067b256718db
Traceback (most recent call last):
  File "c:./niche.py", line 34, in <module>
    test.find_element_by_xpath('//*[@id="resultStats"]/text()').send_keys(Keys.CONTROL + 'v')
  File "C:.\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 385, in find_element_by_xpath
    return self.find_element(by=By.XPATH, value=xpath)
  File "C:.\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 955, in find_element
    'value': value})['value']
  File "C:.\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 312, in execute
    self.error_handler.check_response(response)
  File "C:.\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: The result of the xpath expression "//*[@id="resultStats"]/text()" is: [object Text]. It should be an
element.
  (Session info: chrome=65.0.3325.181)
  (Driver info: chromedriver=2.37.544315 (730aa6a5fdba159ac9f4c1e8cbc59bf1b5ce12b7),platform=Windows NT 10.0.16299 x86_64)

提前致谢:D

【问题讨论】:

  • copy the result 到底是什么意思?
  • 我想将它粘贴到谷歌电子表格中,但这不是主要问题,我稍后会弄清楚如何做^^
  • 如果您在谷歌中输入“123123”,那么可以说搜索结果是大约 100 个结果我想复制“大约 100 个结果”或更好的只是“100”
  • 100 个结果中的每一个都由一组不同的元素组成,例如div、img、锚点、文本等。具体要复制什么,要复制到哪里?
  • >>>>Ungefähr 4.440.000 Ergebnisse (0,40 Sekunden) 
    那 >>>>

标签: python google-chrome selenium web-scraping


【解决方案1】:

尝试使用 id 来定位元素:

driver.find_element_by_id('resultStats')

这是一个完整的工作示例:

from selenium import webdriver

# create your webdriver
driver = webdriver.Chrome()

# open google
driver.get('http://www.google.com')

# locate the search field
search_box = driver.find_element_by_name('q')

# type "foo" into search field
search_box.send_keys('foo')

# execute a search
search_box.submit()

# locate the resultStats element
result_stats = driver.find_element_by_id('resultStats')

# print the text of resultStats
print(result_stats.text)

这将打印:

About 27,000,000 results (0.39 seconds)

【讨论】:

  • 先生您能帮我识别包含UngefährErgebnisse 的语言:)
  • @CoreyGoldberg 非常感谢 ^^ ->DebanjanB 是的,它是德语 ungefähr = 近似,估计或大约 - 这意味着一个不是确切数字的数字,Ergebnisse = 结果
  • @CoreyGoldberg 谢谢。 KaanDev 我只是不明白措辞是什么。把自己算作Corey回答的最幸运的人:)
【解决方案2】:

您可以找到您的字符串并将其打印如下:

yourText = test.find_element_by_xpath('//*[@id="resultStats"]').text

print(yourText)

【讨论】:

    猜你喜欢
    • 2012-08-09
    • 2023-03-14
    • 1970-01-01
    • 2020-10-08
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多