如何使用Selenium和Scrapy抓取ajax页面



我是 Scrapy 的新手,我需要抓取一个页面,但我在抓取要抓取的页面时遇到问题。

无需填写页面上的任何字段,并直接单击"PESQUISAR"(翻译:搜索(按钮,我需要抓取下面显示的所有页面。

看起来我的问题出在页面javascript中......而且我从未使用过javascript。

from scrapy import Spider
from selenium import webdriver
from scrapy.selector import Selector
class CarfSpider(Spider):
name = 'carf'
allowed_domains = ['example.com']
def start_requests(self):
self.driver = webdriver.Chrome('/Users/Desktop/chromedriver')
self.driver.get('example.com')
sel = Selector(text=self.driver.page_source)
carf = sel.xpath('//*[@id="botaoPesquisarCarf"]')

我的主要困难是跟踪此页面。因此,如果有人可以帮助我解决这个问题,我将不胜感激。

对不起,英语不好,希望你已经明白了

您必须使用驱动程序单击按钮 Pesquisar,调用WebDriverWait等待,直到存在 id为 tblJurisprudencia的表元素,指示页面已完全加载以获取源代码,它们从页面解析Acordão值。

# -*- coding: utf-8 -*-
from scrapy import Spider
from scrapy import Selector
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleep

class CarfSpider(Spider):
name = 'carf'
start_urls = ['https://carf.fazenda.gov.br/sincon/public/pages/ConsultarJurisprudencia/consultarJurisprudenciaCarf.jsf']
def __init__(self):
self.driver = webdriver.Chrome(executable_path='/home/laerte/chromedriver')
def parse(self, response):
self.driver.get(response.url)
self.driver.find_element_by_id('botaoPesquisarCarf').click()
page_loaded = WebDriverWait(self.driver, 10).until(
EC.presence_of_element_located((By.ID, "tblJurisprudencia"))
)
if page_loaded:
response_selenium = Selector(text=self.driver.page_source)
table = response_selenium.xpath("//table[@id='tblJurisprudencia']")
for row in table.xpath("//tr"):
body = row.xpath("//div[@class='rich-panel-body ']")
yield {
"acordao" : body.xpath("./a/text()").extract_first()
}

相关内容

  • 没有找到相关文章