2016-11-17 2 views
1

Я пытаюсь извлечь некоторые html с помощью инструмента Python Scrapy.Использование nth-child в Scrapy

Мой селектор выглядит следующим образом:

#navigation > nav > div.js-accordion-menu-wrapper > ul li:nth-child(n+5):nth-child(-n+10) > a::attr(href) 

По какой-то причине это не работает вообще. В частности, кажется, что «nth-child (-n + x) просто не работает. Как будто Scrapy не использует его или не допускает.

Можно ли подтвердить это?

+0

Какую версию 'cssselect' вы установили? (это пакет, используемый в Scrapy для перевода селекторов CSS в выражение XPath). [Версия 1.0.0] (https://pythonhosted.org/cssselect/#version-1-0-0) имеет исправление для ': nth-child (a + b)' с отрицательным значением a. Кроме того, можете ли вы предоставить пример HTML с ожидаемыми данными, которые вам нужно захватить с помощью CSS? –

ответ

1

Scrapy 1.2.1 с помощью cssselect 1.0.0, похоже, работает должным образом.

Вот пример scrapy shell сессия:

In [1]: selector = scrapy.Selector(text="""<ul> 
    ...:  <li>1</li> 
    ...:  <li>2</li> 
    ...:  <li>3</li> 
    ...:  <li>4</li> 
    ...:  <li>5</li> 
    ...:  <li>6</li> 
    ...:  <li>7</li> 
    ...:  <li>8</li> 
    ...:  <li>9</li> 
    ...:  <li>10</li> 
    ...:  <li>11</li> 
    ...:  <li>12</li> 
    ...: </ul>""") 

In [2]: selector.css('ul li:nth-child(n+5)').extract() 
Out[2]: 
['<li>5</li>', 
'<li>6</li>', 
'<li>7</li>', 
'<li>8</li>', 
'<li>9</li>', 
'<li>10</li>', 
'<li>11</li>', 
'<li>12</li>'] 

In [3]: selector.css('ul li:nth-child(n+5):nth-child(-n+10)').extract() 
Out[3]: 
['<li>5</li>', 
'<li>6</li>', 
'<li>7</li>', 
'<li>8</li>', 
'<li>9</li>', 
'<li>10</li>'] 

Я использую:

$ scrapy version -v 
Scrapy : 1.2.1 
lxml  : 3.6.4.0 
libxml2 : 2.9.4 
Twisted : 16.5.0 
Python : 3.5.0+ (default, Oct 11 2015, 09:05:38) - [GCC 5.2.1 20151010] 
pyOpenSSL : 16.2.0 (OpenSSL 1.0.2g 1 Mar 2016) 
Platform : Linux-4.4.0-47-generic-x86_64-with-Ubuntu-16.04-xenial 

$ pip freeze | grep cssselect 
cssselect==1.0.0 
+0

Спасибо, ты прав, это проблема с версией – mjabraham

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

  • Нет связанных вопросов^_^