2017-02-20 34 views
-1

Я running this spider на сайте. Он работает нормально, но одна проблема, с которой я сталкиваюсь, заключается в том, что существует ряд hrefs с «#» в качестве ссылки.Отбрасывание «#» ссылок из Scrapy crawl

Как я могу вообще пропустить или удалить эти # ссылки? Я выводя ссылки на файл в настоящее время и используя дампы lstrip "" в файл. Я также пробовал i.replace, но он по-прежнему оставляет пустую строку в файле.

+0

Можете уточнить свое намерение? вы хотите удалить «#» из строки? игнорировать все это? –

+0

Как правило, рекомендуется размещать соответствующие части кода * здесь *, а не размещать их по какой-либо сторонней ссылке. –

ответ

1

Для всего, что соответствует вашему селектору, вы находитесь yield ing. Условно yield, так конвертировать:

for i in selector.extract(): 
    yield {"url": i.lstrip('#')} 

в нечто вроде

for i in selector.extract(): 
    url = i.lstrip('#') 
    if url: 
     yield {"url": url} 
0

Для того, чтобы пропустить эти ссылки, вам необходимо изменить выражение XPath для извлечения HREF атрибута, только если они не содержат «#»

selector = response.xpath('//*/a[not(contains(@href, "#"))]/@href') 
+0

Это сработало отлично! Я на самом деле пробовал 'not (contains())' ранее, но, похоже, мой синтаксис был неправильным. Благодаря! –

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

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