這是針對紙張的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(),
}
不幸的是,上面的代碼不能返回正確的內容。看來Scrapy無法識別abstracttext
元素。
我試圖用h4
替換abstracttext
,劇本進行得很順利。
那麼我如何提取abstracttext
中的內容呢?
您的代碼爲我工作。嘗試'scrapy shell'then'response.css('div.abstr abstracttext :: text')',結果就在那裏。這可能是由於某種原因,你的'lxml'後端以不同的方式呈現答案,你正在運行什麼操作系統?你也可以試試'pip show lxml'並告訴我們版本? –
Granitosaurus
@Granitosaurus是的,它在'scrapy shell'中工作,但不適用於Python腳本。 –
你的蜘蛛爲我工作。你可以發佈你的'settings.py'嗎?你有沒有中間件或管道啓用?你還可以發佈整個運行日誌嗎?你可以通過'scrapy crawl spider 2>&1> output.log' – Granitosaurus