2014-11-17 9 views
0

Я пытаюсь проползать этой страницей https://www.stickyguide.com/dispensaries/leaf-lab/ используя scrapy. У меня возникли проблемы с просмотром отзывов с этой страницы в течение длительного времени. Если у кого-то есть опыт работы с Ajax или Javascript, поделитесь своими мыслями.Scrapy выбрать из выпадающего меню

1) Я могу легко получить Xpath для обзора:

response.xpath('//*[@id="reviews_section"]/div')  

Однако, я считаю, что обзор часть страницы загружается JavaScript. Каждый раз, когда я полз эту страницу, я получил следующее значение Xpath:

<Selector xpath='//*[@id="reviews_section"]/div' data=u'<div id="loader">\n<div class="loader"></'> 

Если какой-либо метод, который я могу использовать, чтобы гарантировать, что Scrapy ползает, прежде чем было загружено JavaScript? Когда я посмотрел метод онлайн, использование пакета selenium может быть решением, но оно может быть неэффективным.

2) Еще одна проблема, с которой я столкнулся, заключается в том, что я хочу только обходить данные из диспансеров. Мне нужно выбрать опцию «VIEW: Dispensary Only» в раскрывающемся меню рядом с модулем Review. Я взглянул на код HTML, и он имеет тенденцию быть объектом Ajax.

<select id="sort" name="sort" onchange="new Ajax.Request('/update_reviews_section/2487', {asynchronous:true, evalScripts:true, parameters:'sort_by=' + $('sort').value + '&amp;authenticity_token=' + encodeURIComponent('69BgJpnnj0tx/0lYwjIk75iFj0/l2R9EDj1No1FJX9o=')})"> 

Если есть какой-либо метод, я могу использовать для запроса содержимого опции «ПРОСМОТР: только диспансер»? Я пробовал много методов в stackoverflow, но я до сих пор не могу это решить.

Спасибо заранее

ответ

0

Вы должны открыть свои средства разработки (F12), посмотреть, где этот кусок HTML загружается из и просто сделать запрос, чтобы получить его. Я вижу, что обзоры загружаются с этим запросом (POST to/update_review_section с тремя ключами и значениями в теле формы), не забудьте оставить флажок «preserve_log» в инструменте dev, это позволит вам увидеть, что происходит, когда загружается страница. См выделенный запрос на скриншоте

: enter image description here

+0

Большое вам спасибо за быстрый ответ. –

+0

В настоящее время я получаю тело html-страницы следующим образом: 'new Ajax.Request ('/ update_reviews_section/2487', {asynchronous: true, evalScripts: true, parameters: sort_by = '+ $ (' sort '). Value + '& authenticity_token =' + encodeURIComponent ('eVbHui2XbRZx9eMH9hABjsai3A42AGh8sWHa5wqbgAw =')}) ' Затем я делаю извлечение регулярного выражения и получаю' request_url = 'https: // www.stickyguide.com/update_reviews_section/2487'' и 'request_data = {'authenticity_token': 'eVbHui2XbRZx9eMH9hABjsai3A42AGh8sWHa5wqbgAw% 3D', 'sort_by': 'VIEW% 3A% 20Dispensary% 20Only'} '. –

+0

Вызывая 'yield FormRequest (request_url, callback = self.RubiGuessItem, formdata = request_data)', я до сих пор не могу получить соответствующий ответ. Не могли бы вы мне помочь? Я новичок в соскабливании javascript. Спасибо! –

Смежные вопросы