eConti - программирование в вопросах и ответах

Пустой список с scrapy и Xpath

Я начинаю использовать scrapy и xpath, чтобы очистить какую-то страницу, я просто пробую простые вещи с помощью ipython, я получаю ответ на некоторых страницах, например в IMDB, но когда я пытаюсь на других, таких как www.bbb.org, я всегда получаю пустой список. Вот что я делаю:

scrapy shell 'http://www.bbb.org/central-western-massachusetts/business-reviews/auto-repair-and-service/toms-automotive-in-fitchburg-ma-211787'

Аккредитация BBB

Бизнес, аккредитованный BBB с 02/12/2010

BBB определила, что Tom's Automotive соответствует стандартам аккредитации BBB, которые включают обязательство ... "

xpath этого абзаца:

'//*[@id="business-accreditation-content"]/p[2]'

Поэтому я использую:

data = response.xpath('//*[@id="business-accreditation-content"]/p[2]').extract()

Но data - пустой список, я получаю Xpath с хромом, и он работает на других страницах, но здесь я ничего не получаю, независимо от того, какую часть страницы я пробую.


Ответы:


1

Веб-сайт фактически проверяет заголовок User-Agent.

Посмотрите, что он вернет, если вы его не укажете:

$ scrapy shell 'http://www.bbb.org/central-western-massachusetts/business-reviews/auto-repair-and-service/toms-automotive-in-fitchburg-ma-211787'
In [1]: print(response.body)
Out[1]: 123

In [2]: response.xpath('//*[@id="business-accreditation-content"]/p[2]').extract()
Out[2]: []

Да, верно - ответ содержит только 123, если есть неожиданный запрос пользовательского агента.

Теперь с заголовком (обратите внимание на указанный аргумент командной строки -s):

$ scrapy shell 'http://www.bbb.org/central-western-massachusetts/business-reviews/auto-repair-and-service/toms-automotive-in-fitchburg-ma-211787' -s USER_AGENT='Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36'
In [1]: response.xpath('//*[@id="business-accreditation-content"]/p[2]').extract()
Out[1]: [u'<p itemprop="description">BBB has determined that Tom\'s Automotive meets <a href="http://www.bbb.org/central-western-massachusetts/for-businesses/about-bbb-accreditation/bbb-code-of-business-practices-bbb-accreditation-standards/" lang="LS30TPCERNY5b60c87311af50cf82720b237d8ef866">BBB accreditation standards</a>, which include a commitment to make a good faith effort to resolve any consumer complaints. BBB Accredited Businesses pay a fee for accreditation review/monitoring and for support of BBB services to the public.</p>']

Это был пример из оболочки. В реальном проекте Scrapy вам нужно будет установить настройку проекта USER_AGENT . Или вы также можете использовать ротацию пользовательских агентов с помощью этого промежуточного программного обеспечения: _7 _.

03.11.2015
Новые материалы

ИИ для общего блага, часть вторая
В нашем последнем блоге мы исследовали возможности ИИ для общего блага, указав на несколько инициатив по поиску действенных решений для продвижения справедливых и беспристрастных систем ИИ. По..

Время расцвета закончилось
Большую часть своей карьеры в индустрии программного обеспечения программисты работали с головой в песок. Успех в отрасли требует навыков презентации и обучения других. Ценность улучшенных..

Будущее сельского хозяйства: новый уровень производительности с современными технологиями
По мере роста населения мира растет и спрос на продукты питания. Фермеры сталкиваются с растущим давлением необходимости повышать урожайность и максимизировать производительность, манипулируя..

Состояние совместной фильтрации в 2022 году, часть 1
ResBeMF: Улучшение прогнозируемого охвата совместной фильтрации на основе классификации (arXiv) Автор: Анхель Гонсалес-Прието , Авраам Гутьеррес , Фернандо Ортега , Рауль Лара-Кабрера..

Зачем изучать PYTHON в 2022 году !
Python — востребованный, доступный язык программирования с активным, постоянно растущим сообществом пользователей. Для тех, кто хочет сменить профессию в мире технологий с помощью..

Решение капч с помощью Puppeteer
Это руководство предназначено для текстовых кодов, а не для reCAPTCHA Google (см. конец этого сообщения). Требования: Антикапча или любой другой сервис по разгадыванию капчи. Модуль..

7 встроенных библиотек Python, которые необходимо знать
7 встроенных библиотек Python, которые необходимо знать Стандартная библиотека Python значительно упрощает жизнь программистов, предоставляя широкий набор функций. Мы выбираем несколько..