如何使用selenium python点击google上的第一个结果

时间:2013-10-07 12:38:48

标签: python selenium selenium-webdriver

我想点击谷歌搜索结果中的第一个结果。这是我的代码 我在哪里进入从csv文件中读取的chennai craiglist。所以我相信有机结果中的第一个链接将是chennai.craiglist.org。但我很安静,不知道如何做到这一点。

from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import Select
    from selenium.common.exceptions import NoSuchElementException
    import unittest, time, re

    class Browse(unittest.TestCase):
    def setUp(self):
    self.driver = webdriver.Firefox()
    self.driver.implicitly_wait(30)
    self.base_url = "http://google.com/"

    filename = 'test.csv'
    line_number = 1
    with open(filename, 'rb') as f:
        mycsv = csv.reader(f)
        mycsv = list(mycsv)
        self.cityname=mycsv[line_number][0]
        self.username=mycsv[line_number][1]
        self.password=mycsv[line_number][2]
        self.verificationErrors = []

def test_browse(self):
    driver = self.driver
    driver.get(self.base_url + "/")
    driver.find_element_by_id("gbqfq").send_keys(self.cityname)

我想知道这一行后会发生什么?

更新

现在我正在给予

driver.find_elements_by_xpath(".//*[@id='rso']//div//h3/a")[:1].click()

我不确定它是否会起作用。

3 个答案:

答案 0 :(得分:5)

你选择的xpath是'好'但可能不是最好的。

result = driver.find_elements_by_xpath("//ol[@id="rso"]/li")[0] //make a list of results and get the first one
result.find_element_by_xpath("./div/h3/a").click() //click its href

答案 1 :(得分:0)

这非常适合Google搜索结果。

results = driver.find_elements_by_xpath('//div[@class="r"]/a/h3')  # finds webresults
results[0].click(). # clicks the first one

答案 2 :(得分:0)

我一直在python3中使用driver.find_element_by_tag_name("cite").click(),为我工作。但是,如果只希望链接到顶部搜索结果,则如下所示使用请求和BeautifulSoup库会更快。

#!/usr/bin/env python3
import requests
from bs4 import BeautifulSoup
url = 'http://www.google.com/search?q=something'
page = requests.get(url)
soup = BeautifulSoup(page.text, "html.parser")
print(soup.find('cite').text)