Это web page для бумаги. Есть полезная информация для извлечения.Извлечение текста в пользовательских тегах используется Scrapy
Я хочу извлечь название, автору и резюме этой статьи. Поэтому я написал следующий код:
class PublicationSpider(scrapy.Spider):
name = "publications"
start_urls = [
'https://www.ncbi.nlm.nih.gov/pubmed/15721472',
]
def parse(self, response):
for publication in response.css('div.rprt.abstract'):
yield {
'title': publication.css('h1::text').extract_first(),
'author': publication.css('div.auths > a::text').extract(),
'abstract': publication.css('div.abstr abstracttext::text').extract(),
'doi': publication.css('div.aux a::text').extract_first(),
}
К сожалению, приведенный выше код не смог вернуть правильный контент. Кажется, что элемент abstracttext
не может быть распознан Scrapy.
Я попытался заменить abstracttext
на h4
, и сценарий прошел хорошо.
Итак, как я могу извлечь контент в abstracttext
?
Ваш код работает для меня. попробуйте 'scrapy shell' then 'response.css ('div.abstr abstracttext :: text')' и результаты есть. Может быть, по какой-то причине ваш «lxml» backend выполняет ответ по-разному, какую операционную систему вы используете? Можете ли вы также попробовать «pip show lxml» и сообщить нам версию? –
Granitosaurus
@Granitosaurus Да, он работает в 'scrapy shell', но не работает в скрипте Python. –
Ваш паук работает для меня. Не могли бы вы разместить свой 'settings.py'? У вас есть какие-либо посредники или трубопроводы? Не могли бы вы также опубликовать весь журнал выполнения? Вы можете сделать это с помощью 'scrapy crawl spider 2> & 1> output.log' – Granitosaurus