我必须抓住这个页面http://www.imdb.com/search/title?count=100&release_date=2016,2016&title_type=feature。 使用xpath时我可以刮掉电影名称,Z' The Lost City of Z'。这是代码:
driver_t.get('http://www.imdb.com/search/title?count=100&release_date=2016,2016&title_type=feature')
x= driver_t.find_element_by_xpath('//*[@id="main"]/div/div/div[3]/div[1]/div[3]/h3/a')
print x.text
为了刮掉所有电影,我从xpath中删除了[1]
driver_t.get('http://www.imdb.com/search/title?count=100&release_date=2016,2016&title_type=feature')
x= driver_t.find_element_by_xpath('//*[@id="main"]/div/div/div[3]/div/div[3]/h3/a')
print x.text
但是,输出只是第一部电影的名字('失落之城的Z')
这适用于' R'但它不适用于python(selenium webdriver)。有人能告诉我哪里出错了吗?
答案 0 :(得分:0)
您想要range
(复数元素)。
您还可以将xpath公式简化为:
find_elements_by_xpath
然后第一个和最后一个标题可用:
titles = driver.find_elements_by_xpath('.//h3[@class="lister-item-header"]//a')
然而,我注意到最后一部电影的完整标题是“Raw II'”。你可能认为有必要使用这样的东西,然后丢弃年份部分。
>>> titles[0].text
'The Lost City of Z'
>>> titles[99].text
'Raw'
答案 1 :(得分:0)
以下是您的问题的答案:
为了使用网址http://www.imdb.com/search/title?count=100&release_date=2016,2016&title_type=feature
代替find_element_by_xpath
从网页上抓取所有电影,我们将使用driver.find_elements_by_xpath
来返回列表。接下来,我们将遍历列表并检索文本并逐个打印。以下是供您参考的代码块:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("start-maximized")
options.add_argument("disable-infobars")
options.add_argument("--disable-extensions")
driver = webdriver.Chrome(chrome_options=options, executable_path="C:\\Utility\\BrowserDrivers\\chromedriver.exe")
driver.get("http://www.imdb.com/search/title?count=100&release_date=2016,2016&title_type=feature")
titles = driver.find_elements_by_xpath("//h3[@class='lister-item-header']/a")
for title in titles:
movie_name = title.get_attribute("innerHTML")
print(movie_name)
如果这回答你的问题,请告诉我。