#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! Спасибо за рекомендацию
Ответ №1:
отключите Javascript в браузере и перезагрузите страницу. Затем вы увидите действительный новейший xpath (вы можете использовать Quick Javascipt Switcher в вашем браузере Chrome, чтобы отключить js)