Я прочитал много сообщений об использовании Scrapy для удаления JSON данных, но не нашел ни одного с датами в URL-адресе.
Я использую Scrapy версии 2.1.0 и пытаюсь очистить это сайт , который заполняется на основе диапазонов дат в URL. Здесь - остальная часть моего кода, который включает заголовки, которые я скопировал с сайта, который я пытаюсь очистить, но я пытаюсь использовать следующие while
l oop для генерации URL-адресов:
while start_date <= end_date:
start_date += delta
dates_url = (str(start_date) + "&end=" + str(start_date))
ideas_url = base_url+dates_url
request = scrapy.Request(
ideas_url,
callback=self.parse_ideas,
headers=self.headers
)
print(ideas_url)
yield request
Затем я пытаюсь очистить, используя следующее:
def parse_ideas(self, response):
raw_data = response.body
data = json.loads(raw_data)
yield {
'Idea' : data['dates']['data']['idea']
}
Здесь - это более полный вывод ошибки, когда я пытаюсь запустить spider и экспортировать его в CSV, но я продолжаю получать сообщение об ошибке:
File "/usr/lib/python3.7/json/decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Это лучший подход для очистки сайта, который использует даты в своем URL-адресе для заполнения? И если да, то что я делаю неправильно с моим JSON запросом, что я не получаю никаких результатов?
Обратите внимание, если это имеет значение, в settings.py
я включил и отредактировал следующее:
USER_AGENT = 'Mozilla/5.0 (X11; CrOS x86_64 12871.102.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.141 Safari/4537.36'
ROBOTSTXT_OBEY = False
COOKIES_ENABLED = False
И я добавил следующее в конце settings.py
HTTPERROR_ALLOWED_CODES = [400]
DOWNLOAD_DELAY = 2