这是论文的web page。提取一些有用的信息。
我想提取本文的标题,作者和摘要。所以我写了以下代码:
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
元素。
我尝试将abstracttext
替换为h4
,并且脚本运行良好。
那么如何在abstracttext
中提取内容?
答案 0 :(得分:0)
我只使用lxml
找到了另一种解决方案:
from lxml import html
from requests import get as getRequest
htmlPage = getRequest('https://www.ncbi.nlm.nih.gov/pubmed/15721472')
htmlTree = html.fromstring(htmlPage.content)
title = htmlTree.xpath('//div[@class="rprt abstract"]/h1/text()')
authors = htmlTree.xpath('//div[@class="auths"]/a/text()')
doi = htmlTree.xpath('//dl[@class="rprtid"]/dd/a/text()')
abstractHeadings = htmlTree.xpath('//div[@class="abstr"]/div/h4/text()')
abstractTexts = htmlTree.xpath('//div[@class="abstr"]/div/p/abstracttext/text()')
参考:
答案 1 :(得分:-1)
您可以使用以下xpath获取值。
title = publication.xpath("//div[@class='rprt_all']/div/h1/text()").extract()