【发布时间】:2015-07-17 12:51:03
【问题描述】:
我想从http://www.squawka.com/match-results 抓取数据。首先我想在下拉菜单中选择联赛,例如美洲,德甲。我的代码选择了美洲,但未加载新数据。我认为后台有一些 javascript 没有启动。
这里是代码。我将scrapy和selenium与chromedirver一起使用,但我也测试了firefox驱动程序但没有成功。
import scrapy
from squawka.items import SquawkaItem
from scrapy.http import FormRequest, Request
from selenium import selenium
from selenium import webdriver
import time
class SquawkaSpider(scrapy.Spider):
name = "squawka"
allowed_domains = ["squawka.com"]
start_urls = ["http://www.squawka.com/match-results"]
def __init__(self):
self.driver = webdriver.Chrome(executable_path='/Users/fabian/chromedriver')
def parse(self, response):
self.driver.get(response.url)
time.sleep(5)
Dropdown = self.driver.find_element_by_xpath("//*[@id='league-filter-list']/option[contains(text(), 'The Americas')]").click()
我希望有人可以帮助我。
谢谢
【问题讨论】:
-
我什至不能手动选择“美洲”..
-
真的吗?那很奇怪。手动我可以在我的网络浏览器中选择每个联赛,例如美洲或德甲。
-
网站运行正常。这不是最终解决方案,但请阅读有关隐式/显式等待以摆脱睡眠的内容! (docs.seleniumhq.org/docs/…)。例如,您可以直到元素 .//*[@id='league-filter-list'](下拉菜单)可用。
-
@metar 你的意思是这样的吗:wait = WebDriverWait(self.driver, 10) 然后在下一行 element = wait.until(EC.element_to_be_clickable((By.ID,'league -过滤器列表')))。代码正在运行。这样对吗?我的刮刀是否等到下拉菜单可点击?
标签: javascript python selenium web-scraping scrapy