Как мне очистить весь текст в //div[@class=’body’] на этом веб-сайте?

#python-3.x #scrapy

#python-3.x #scrapy

Вопрос:

 import scrapy


class ActScraper1Spider(scrapy.Spider):
    name = 'act_scraper_1'
    allowed_domains = ['sso.agc.gov.sg']
    start_urls = ['https://sso.agc.gov.sg/Act/AA2004']

def parse(self, response):

    info = response.xpath("//div[@class='body']//text()").getall()
    yield {
        'info': info
    }
 

Итак, мой приведенный выше код выполняет часть работы, поскольку он удаляет только первую таблицу из 8 таблиц в теге div[@class=’body’]

введите описание изображения здесь

Как мне заставить мой скребок очистить весь текст во всех таблицах? Спасибо!

Комментарии:

1. Попробуйте добавить ‘/table’ в свой xpath. Я думаю, что getall() должен быть списком всех совпадающих узлов, которые будут представлять собой все таблицы

2. Попробовал это! По-видимому, все еще дает тот же результат. Не уверен, связано ли это с тем, что на этой веб-странице использовалась отложенная загрузка

3. Это действительно может быть точкой. Вы можете отключить Javascript в инструментах разработчика браузера и перезагрузить страницу. Затем вы видите, что видит ваш обычный Scrapy spider. Я еще не углубился в очистку содержимого JS, но я думаю, что важным подходом является использование Scrapy с Splash

4. Ага! Отключение JS дает мне текст, который мой паук очистил. Позвольте мне заглянуть в Splash! Спасибо за рекомендацию

5. docs.scrapy.org/en/latest/topics/dynamic-content.html

Ответ №1:

отключите Javascript в браузере и перезагрузите страницу. Затем вы увидите действительный новейший xpath (вы можете использовать Quick Javascipt Switcher в вашем браузере Chrome, чтобы отключить js)