使用scrapy将网页刮成tabdelimited格式

2024-09-28 16:58:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用scrapy将这两个页面上的数据:herehere刮取并解析为制表符分隔的格式。我做了这些命令:

scrapy shell
fetch("https://www.drugbank.ca/drugs/DB04899")
print response.text

我的两个问题: 1例如,对于this页,键入时:

response.css(".sequence::text").extract() 
[u'>DB04899: Natriuretic peptides B\nSPKMVQGSGCFGRKMDRISSSSGLGCKVLRRH']

但当我打字时:

>>> response.css(".synonyms::text").extract()
[]
>>> response.css(".Synonyms::text").extract()
[]

但是您可以看到网页上列出了同义词,因此输出不应为空。有人能证明我做错了什么吗?(我还尝试了其他标记,如同义词、同义词)等

  1. 键入时:响应.css(“.targets::text”).extract(),输出为[u'targets(3)”。我想知道如何才能真正解析这个列表中的数据,但我猜这与没有使用正确的标记和上面的问题1有关。

  2. 这是一个模糊的问题/目前对我来说是一个高级的问题,有没有可能一次就把整个页面刮下来,而不必知道每个标签?因此,我的输出将是一个名为“identification”的字典,其中包含名称、登录号、类型等作为键。然后是一本以适应症、结构适应症等为关键词的药理学词典,然后是另一本叫做交互作用的词典,还有一本叫做药物经济学等,每页一节? 谢谢


Tags: 数据text标记键入hereresponseextract页面
1条回答
网友
1楼 · 发布于 2024-09-28 16:58:19

页面上确实没有具有synonymsSynonyms类属性值的元素。你知道吗

您可以通过dt元素的“going to right”和使用following-sibling的“synonyms”文本来获得同义词:

In [2]: response.xpath("//dt[. = 'Synonyms']/following-sibling::dd/ul/li/text()").extract()
Out[2]: 
['BNP',
 'Brain natriuretic peptide 32',
 'Natriuretic peptides B',
 'Nesiritide recombinant']

相关问题 更多 >