首页 > 解决方案 > 使用 selenium 获取不同的抓取结果,仅获取加载文本

问题描述

我尝试在稍后添加一些分页之前刮掉(例如)这个页面。但即使是 1 页,我也没有得到我想要的结果。这是我的代码(我使用的是scrapy和selenium):

from scrapy import Spider
from selenium import webdriver
from scrapy.selector import Selector
from scrapy.http import Request
from quotes_spider.items import QuotesSpiderItem

class PutusanSelSpider(Spider):
    name = 'putusan_sel'
    allowed_domains = ['engine.ddtc.co.id']
    start_urls = ['https://perpajakan.ddtc.co.id/putusan-pengadilan-pajak/read/put-108430-162013ppm-xivb-tahun-2019']
    
    def __init__(self):
        self.driver = webdriver.Chrome('./chromedriver')

    def parse(self, response):
        self.driver.get(response.url)
        item = QuotesSpiderItem()
        
        trans_table= {ord(c): None for c in u'\r\n\t\xa0'}
        item['content'] = ' '.join(s.translate(trans_table) for s in response.xpath('//*[@id="nocompare-wrapper-pp"]//text()').extract())
        
        return item
        
        self.driver.close()

从我上面的代码中,我只得到了结果:

{'content': '   MEMUAT... '}

它没有显示我想要的任何内容(例如此页面中显示的内容)。看起来它只有“加载”文本。但是当我尝试在命令提示符下直接使用 ipython 时,我得到了我想要的结果。这是我的 ipython 代码:

from selenium import webdriver
from scrapy.selector import Selector
driver = webdriver.Chrome('./chromedriver')
driver.get('https://perpajakan.ddtc.co.id/putusan-pengadilan-pajak/read/put-108430-162013ppm-xivb-tahun-2019')

sel = Selector(text=driver.page_source)
trans_table = {ord(c): None for c in u'\r\n\t\xa0'}

item = ' '.join(s.translate(trans_table) for s in sel.xpath('//*[@id="nocompare-wrapper-pp"]//text()').extract())

当我打印该项目时,我得到了我想要的一切。

我的第一个代码有什么问题吗?

标签: pythonseleniumweb-scrapingscrapy

解决方案


推荐阅读