我试着用scrapy
和selenium
刮一个站点,一开始我看到的结果是[ {{ certificant.FirstName }} {{ certificant.LastName }} ]
所以我想可能是因为页面还在加载,所以我添加了一个WebDriverWait
,让按钮在提取数据之前显示,但我仍然得到了相同的结果。
我相信我得到的结果是从模板引擎做动态的东西,但如果是这样,我应该做什么,使刮实际上与此工作?
这是我目前手头上的东西
import scrapy
from scrapy import Request
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
class PjFx110Spider(scrapy.Spider):
name = "pj_fx110"
ROOT_URL = 'https://aplanner.ca'
start_urls = [
ROOT_URL
]
def __init__(self):
options = Options()
# options.add_argument("--headless")
self.driver = webdriver.Chrome('./chromedriver', options=options)
def start_requests(self):
for url in self.start_urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
self.driver.get(response.url)
WebDriverWait(self.driver, 3600).until(EC.presence_of_element_located((By.ID, 'btnShowResults')))
lists = response.css('.list-group')
name = lists.xpath('//*[@id="FPlist"]/div/ul[1]/li/span[1]/text()').extract()
print(name, '---------lists----------')
非常感谢您的建议和意见。
1条答案
按热度按时间qfe3c7zg1#
我假设你想得到完整的计划者名单(你没有确认这一点)。你要求的是一个替代方案,在这里(我想,这与你最初的计划相差很远):
这将在一分钟左右返回一个csv文件和一个 Dataframe 头,显示csv.file的格式。