我希望获得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")
答案 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]