Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.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
Html 我想在自动化完成后将电影/系列的IMDB评级打印到终端_Html_Css_Selenium_Web_Web Crawler - Fatal编程技术网

Html 我想在自动化完成后将电影/系列的IMDB评级打印到终端

Html 我想在自动化完成后将电影/系列的IMDB评级打印到终端,html,css,selenium,web,web-crawler,Html,Css,Selenium,Web,Web Crawler,我使用谷歌搜索查找元素,因为它似乎比IMDB更容易导航 import selenium.webdriver as webdriver print("This program finds the imdb rating of a movie or TV series!!!") def get_results(search_term): url="https://www.google.com" browser=webdriver.Safari() browser.get(u

我使用谷歌搜索查找元素,因为它似乎比IMDB更容易导航

import selenium.webdriver as webdriver
print("This program finds the imdb rating of a movie or TV series!!!")

def get_results(search_term):
    url="https://www.google.com"
    browser=webdriver.Safari()
    browser.get(url)
    search_box= browser.find_element_by_id("lst-ib")
    search_box.send_keys(search_term)
    search_box.submit()
    links = browser.find_element_by_id("//div[@class = 'slp f']/text()")#this line is problematic, should i use xpath?how?
    print(links)

search_key=input("Enter the movie name : ")
get_results("what is the imdb rating of "+search_key)
这里是错误

This program finds the imdb rating of a movie or TV series!!!
Enter the movie name : inception
Traceback (most recent call last):
  File "web1.py", line 15, in <module>
    get_results("what is the imdb rating of "+search_key)
  File "web1.py", line 10, in get_results
    links = browser.find_element_by_id("//div[@class = 'slp f']/text()")
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 353, in find_element_by_id
    return self.find_element(by=By.ID, value=id_)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 957, in find_element
    'value': value})['value']
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 314, in execute
    self.error_handler.check_response(response)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: An element could not be located on the page using the given search parameters.
此程序查找电影或电视剧的imdb分级!!!
输入电影名称:inception
回溯(最近一次呼叫最后一次):
文件“web1.py”,第15行,在
获取搜索结果(“imdb对“+搜索键”的评级是多少)
get_结果中第10行的文件“web1.py”
links=browser.find_element_by_id(“//div[@class='slp f']]/text()”)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/selenium/webdriver/remote/webdriver.py”,第353行,按id查找元素
返回self.find_元素(by=by.ID,value=ID_u)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/selenium/webdriver/remote/webdriver.py”,第957行,在find_元素中
'value':value})['value']
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/selenium/webdriver/remote/webdriver.py”,执行中第314行
self.error\u handler.check\u响应(响应)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/selenium/webdriver/remote/errorhandler.py”,第242行,在check_响应中
引发异常类(消息、屏幕、堆栈跟踪)
selenium.common.exceptions.NoSuchElementException:消息:使用给定的搜索参数在页面上找不到元素。

请具体说明。谢谢大家!

我对你的代码做了一点修改,效果很好。添加了显式等待并更改了选择器

import selenium.webdriver as webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


print("This program finds the imdb rating of a movie or TV series!!!")

def get_results(search_term):
    url = "https://www.google.com"
    browser = webdriver.Safari()
    browser.get(url)
    search_box= browser.find_element_by_id("lst-ib")
    search_box.send_keys(search_term)
    search_box.submit()
    rating = WebDriverWait(browser, 5).until(
    EC.presence_of_element_located((By.XPATH, '//*[@id="rso"]/div/div/div[1]/div/div/div[1]/div/div[2]')))
    print(rating.text)
    links = browser.find_elements_by_xpath('//h3/a')
    first_link = links[0].get_attribute('href')
    print(first_link)
    browser.quit()

search_key=input("Enter the movie name : ")
get_results("what is the imdb rating of "+search_key)

希望,这将对您有所帮助。

您可能需要将其缩小到有错误的部分,以便人们更容易帮助您。事实上,对行号和源文件的引用可能会为正在发生的事情提供更多的上下文。提供其他相关的课程作为例子。请修正你的缩进,以获得一个经过充分研究的答案。谢谢,它工作完美。你能不能详细说明一下会议的情况。再次感谢!除非它在5秒内找到要返回的元素,否则在抛出TimeoutException之前将等待最多5秒。默认情况下,WebDriverWait每500毫秒调用一次ExpectedCondition,直到它成功返回。对于所有其他ExpectedCondition类型,成功返回的值为布尔返回true或NOTNULL。我为您感到高兴。请你选择正确的答案好吗?此外,您可以在这里阅读更多关于Selenium中等待的信息:再次感谢您的帮助。忘了选择正确的答案。更正错误。从最近几天开始,我一直在努力导航。您能解释一下如何使用XPath和其他方法导航吗?