Использование Python библиотеки Scrapy, я следующее:Как получить текст ссылки из этого XPath?
scrapy shell "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/"
Оттуда я хотел бы получить индивидуальную ссылку + текст каждого возвращенного элемента:
response.xpath('//div[@class="title-and-desc"]/a')
Однако, только ссылки в настоящее время а не текст. Вот пример того, что вернулся:
response.xpath('//div[@class="title-and-desc"]/a')
[<Selector xpath='//div[@class="title-and-desc"]/a' data=u'<a target="_blank" href="http://www.brpr'>, <Selector xpath='//div[@class="title-and-desc"]/a' data=u'<a target="_blank" href="http://www.dive'>, <Selector xpath='//div[@class="title-and-desc"]/a' data=u'<a target="_blank" href="http://rhodesmi'>,
я могу перебрать выше результатов, где i
является переменной для каждой итерации:
i.xpath("text()").extract_first(),
i.xpath("@href").extract_first()
Но только @href
значения возвращаются. Это происходит потому, что нет ничего для text()
для получения результатов. Что нужно изменить, чтобы я мог получить сопроводительный текст ссылки?
Для справки, полный пример Scrapy исходит отсюда: Scrapy Tutorial Example.
Это не решает проблему, так как получать только текст означает не получить URL. Я попробовал 'i.xpath (" // text() "). Extract_first()', но это не сработало. – 4thSpace
@ 4thSpace это действительно работает, см. Мое редактирование для примера. – Granitosaurus
Другим полезным вариантом является использование «string()' или 'normalize-space()' '' '' '' '' '' '' '' '' '' '' 'для l в ссылках: print (l.xpath ('normalize-space (.)'). Extract_first(), l. XPath ('@ HREF'). extract_first()) ' –