2014-10-31 2 views
1

Я ползком через сайт с помощью Scrapy, и я хочу, чтобы отформатировать распакованные сухари для создания сайта путь:сухари формат Scrapy с помощью XPath

HTML:

<ul id="breadcrumbs"><li><a href="/site/ID/home">Home</a></li> <li><a href="/site/ID/AboutUs">Who We Are</a></li></ul> 

Что я делаю:

breadcrumb = response.xpath("//ul[@id='breadcrumbs']")[0].extract() 

Что я получаю сейчас:

<ul id="breadcrumbs"><li><a href="/site/ID/home">Home</a></li> <li><a href="/site/ID/AboutUs">Who We Are</a></li></ul> 

Что мне действительно нужно:

/home/AboutUs/ 

Любая идея, как я должен написать в XPath или как я должен форматировать результаты?

ответ

2

Получить все href значения, используя //ul[@id="breadcrumbs"]/li/a/@href XPath, извлечения окончаний с помощью .re() и join них.

Пример от scrapy shell:

$ scrapy shell index.html 
>>> ''.join(response.xpath('//ul[@id="breadcrumbs"]/li/a/@href').re(r'^.*?(/\w+)$')) 
u'/home/AboutUs' 

^.*?(/\w+)$ будет соответствовать любые символы, а затем (? означает, что это «не жадный» типа соответствия) по косой черты, за которой следует один или более алфавитно-цифровых символов (и _) , Скобки помогают capture последней части строки (косые черты и апланнумерные символы). ^ и $ - это начало и конец строки соответственно.

+0

Это сработало! Чем больше я пытаюсь убежать от регулярного выражения, тем больше он возвращается ко мне – user988544