Оболочка Scrapy ничего не возвращает

Я хочу извлечь названия организаций и основные сведения о них из this Веб-сайт. Я использую scrapy для извлечения информации. Я пробовал оболочку scrapy для извлечения первого имени организации ТЕНСЕНТ ХОЛДИНГ и написал команду scrapy в оболочке scrapy как response.css('div.flex-no-grow.cb-overflow-ellipsis.identifier-label::text').extract_first() и эта команда ничего не возвращает. Я новичок в веб-скраппинге. Может ли кто-нибудь помочь мне в написании команды для нее или исправить то, где я ошибаюсь?

когда я попытался удалить вашу ссылку в оболочке scrapy, я получил код ответа 416 и веб-страницу, в которой говорилось: «Когда вы просматривали www.crunchbase.com, что-то в вашем браузере заставило нас подумать, что вы бот. Это может произойти по нескольким причинам. ...... ". По сути, это мера безопасности, которую вам нужно будет обойти, прежде чем вы сможете отказаться от этого веб-сайта. Итак, просто проверьте, как выглядит ваш текст ответа, прежде чем начинать выбирать элементы, чтобы убедиться, что вы решаете правильную проблему.

Kumar 13.07.2018 09:38

Спасибо за ответ. Я не получаю ответа об ошибке в оболочке Scrapy, когда я пишу свою команду, она просто ничего не возвращает ни ответа об ошибке, ни какого-либо результата. Как мы можем обойти эту меру безопасности с помощью scrapy?

Ayushman Koul 13.07.2018 11:05

запустите print(response.text) в оболочке scrapy и подтвердите, получаете ли вы фактические данные веб-страницы или веб-страницу с сообщением выше, которое я опубликовал.

Kumar 13.07.2018 11:08

Да, я получил такой же ответ, как вы указали в своем сообщении, как мы можем его обойти?

Ayushman Koul 13.07.2018 11:18
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
453
1

Ответы 1

Я проверил ваш веб-сайт, все работает нормально, но есть проблема с оболочкой scrapy. Оболочка scrapy передает заголовки как Scrapy/{version}(+http://scrapy.org), и этот веб-сайт выдает ошибку 403, вы можете проверить это, распечатав объект ответа.

Что вам нужно сделать, так это изменить заголовки запроса, скажем, более подходящие заголовки headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0'} и передайте его с запросом, тогда вы получите ответ.

Чтобы попробовать это в оболочке, сделайте следующее:

headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0'}
url = 'https://www.crunchbase.com/search/organization.companies'

Сделайте запрос как:

req = scrapy.Request(url=url, headers=headers)
fetch(req)

Теперь вы получите 200 в ответ и воспользуетесь своим CSS-путем.

Другие вопросы по теме