Хотите использовать Scrapy для очистки сайта, но не уверены, что есть способ обойти JavaScript - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть список идентификаторов школ для школ в Нью-Йорке. Я хочу собрать общедоступные бюджетные данные для каждой из этих школ. Данные бюджета доступны на этом сайте:

https://www.nycenet.edu/offices/d_chanc_oper/budget/dbor/galaxy/galaxybudgetsummaryto/default.aspx

Я использую Python для этой задачи, и для автоматизации браузера я знаю, что scrapy гораздо быстрее, чем селен. Вопрос в том, что мне нужно взаимодействовать со страницей. А именно, я должен ввести школьный идентификатор, а также год интереса (в конце концов, я хочу собирать бюджетные данные за каждый год). Это взаимодействие (насколько я могу судить) вызывает Javascript для получения новых данных.

Я надеюсь, что есть способ обойти это, поэтому я могу использовать терапию, а не селен, так как селен медленный. Некоторый прогресс, который я достиг, заключается в том, что я нашел URL следующего типа (я не помню, как я это узнал, к сожалению):

https://www.nycenet.edu/offices/d_chanc_oper/budget/dbor/galaxy/galaxybudgetsummaryto/default.aspx?DDBSSS_INPUT=M015

может привести вас непосредственно к данным для школы (я думаю, не нужно взаимодействовать с формами или Javascript). К сожалению, я смог заставить этот метод работать только в 2019 году.

Может ли кто-нибудь найти способ структурировать URL так, чтобы можно было указать год? Или, может быть, кто-нибудь может дать мне знать, если это невозможно?

1 Ответ

1 голос
/ 30 апреля 2019

Если вы осмотрите вкладку сети инструментов разработчика вашего браузера, вы заметите, что все это довольно стандартный пост-запрос.Вы можете воспроизвести его с помощью FormRequest Scrapy .

yield scrapy.FormRequest.from_response(
    response, 
    formid='form1', 
    formdata={'School_Code': 'm015', 'Fiscal_Year': '2019'},
    callback=self.parse_school  # for instance
) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...