scrapy xpath:无法获取谷歌下一页

时间:2015-01-23 05:29:59

标签: python xpath scrapy

我希望获得https://www.google.com.tw/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=test

中的下一页

但是我的代码不起作用 请指导我。非常感谢你。

  scrapy shell "https://www.google.com.tw/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=test"
 response.xpath("//a[@id='pnnext']/@href")

2 个答案:

答案 0 :(得分:1)

这是工作代码

scrapy shell "https://www.google.com.tw/search?q=test"
response.xpath("//a[@id='pnnext']/@href")

问题在于您向谷歌提出请求的方式。

在任何情况下都要了解处理Google搜索的政策。

Google的自定义搜索服务条款(TOS)可在http://www.google.com/cse/docs/tos.html找到。

<强>更新 我写了一篇蜘蛛来深入测试这个问题。

根本不是pythonic(欢迎改进),但我对处理谷歌搜索结果的机制感兴趣。

正如之前的评论所建议的那样,需要对接口的国际化进行测试。

class googleSpider(CrawlSpider):
    name = "googlish"
    allowed_domains = ["google.com"]
    start_urls = ["http://www.google.com"]

    def __init__(self):
        self.driver = webdriver.Firefox()

    def parse(self, response):
        self.driver.get(response.url)      
        login_form = self.driver.find_element_by_name('q')        
        login_form.send_keys("scrapy\n")
        time.sleep(4)
        found = False
        while not found:
            try :
                for element in self.driver.find_elements_by_xpath("//div[@class='rc']"):
                    print element.text + "\n"
                for i in self.driver.find_elements_by_id('pnnext'):
                    i.click()
                time.sleep(5)        
            except NoSuchElementException:
                found = True
                pass

        self.driver.close()

答案 1 :(得分:0)

你可以尝试使用x下面的路径,让我知道结果是什么。看起来使用的xpath并没有指向DOM中web元素的确切位置。

//a[@id='pnnext']//span[2]