#scrapy
#scrapy
Вопрос:
Я новичок в Scrapy и использую его для сбора данных с веб-сайта Lazada. Я получил HTTP-сообщение 200, означающее, что ответ успешно возвращен. Но я не могу разобрать ответ, хотя запрос xpath правильный. Кто-нибудь может мне помочь? Спасибо.
Это код:
import scrapy
class LazadaSpider(scrapy.Spider):
name = 'lazada'
allowed_domains = ['lazada.com.my']
start_urls = ['https://lazada.com.my/catalog/?q=books/']
def parse(self, response):
all_products = response.xpath('//div[@class="c2prKC"]')
print(len(all_products))
результат показывает 0 для длины all_products
И результат показан на картинке.
ОБНОВЛЕНИЕ: я пытался получить данные, сохраненные в javascript или используя selenium, чтобы имитировать поведение пользователя при просмотре, однако я получу заблокированную КАПЧУ после попытки очистки в течение одного раза, а затем мне нужно подождать 15 минут, чтобы я мог очистить второй раз. Кто-нибудь может мне помочь?
капча, с которой я столкнулся после очистки lazada в течение одного раза
Комментарии:
Ответ №1:
Вы можете попробовать получить доступ к Интернету через оболочку scrapy в терминале, чтобы перехватить ответ, после чего вы можете использовать представление (ответ), чтобы открыть браузер и настроить свой xpath или css селектор
scrapy shell https://lazada.com.my/catalog/?q=books/ # Access the web through scrapy
view(response) # View cached web on browser
Обновить :
Кажется, lazada использует динамический контент для загрузки элемента (элемент загружается и отображается с использованием javascript после загрузки страницы), это означает, что вам понадобится другой модуль для обхода веб-страниц, попробуйте использовать selenium, scrapy-splash или requests-html.
Комментарии:
1. Спасибо за ваш ответ. Действительно ценю это и попробую позже.
2. Я пробовал response.css («div#root div.ant-row div.ant-row div»), но он по-прежнему выдает null, правильный ли css?
3. элементы ini lazada отображаются с использованием javascript после загрузки страницы, вы можете проверить это, распечатав текст ответа из scrapy. Для обхода такого веб-сайта вам понадобится другой модуль для отображения javascript, вы можете попробовать использовать selenium, requests-html или scrapy splash, или вы можете просмотреть страницу в браузере и попытаться получить запрос xhr с самой страницы, чтобы получить источник данных, если он существует
4. во-первых, спасибо за ваши комментарии. Я пробовал selenium, но каким-то образом я буду заблокирован CAPTCHA после нескольких попыток…
5. Текст загружается из JSON из запроса GET.
Ответ №2:
Элемент загружается и отображается с использованием javascript после загрузки страницы.
показанный элемент из view-source
Как получить элемент из ответа?
data_str = response.css('script')[3].re_first('window.pageData=({. })')
Комментарии:
1. во-первых, большое спасибо за комментарии, я уже пробовал это раньше, однако, это работает только в первый раз, затем я буду заблокирован КАПЧЕЙ, вы можете мне помочь? Я все еще застрял с прошлой недели.
2. что за капча?
3. страница содержала ползунок
4. я не могу найти никаких статей, в которых рассказывается об обходе инструментов защиты от очистки в lazada
5. Вот одна статья, чтобы обойти слайд-капчу: medium.com/the-innovation /…