首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用scrapy将网页刮成制表符分隔的格式

使用scrapy将网页刮成制表符分隔的格式
EN

Stack Overflow用户
提问于 2018-04-17 15:11:15
回答 1查看 303关注 0票数 1

我想使用scrapy将这两个页面上的数据抓取和解析为制表符分隔的格式:这里这里。我做了以下命令:

代码语言:javascript
复制
scrapy shell
fetch("https://www.drugbank.ca/drugs/DB04899")
print response.text

我的两个问题: 1.例如,对于页面,当我键入:

代码语言:javascript
复制
response.css(".sequence::text").extract() 
[u'>DB04899: Natriuretic peptides B\nSPKMVQGSGCFGRKMDRISSSSGLGCKVLRRH']

但当我打字时:

代码语言:javascript
复制
>>> response.css(".synonyms::text").extract()
[]
>>> response.css(".Synonyms::text").extract()
[]

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

  1. 当我输入: response.css(".targets::text").extract()时,输出是u‘’Targets (3)‘。我想知道如何才能真正解析这个列表中的数据,但我想这与没有使用正确的标记和上面的问题1有关。
  2. 这是一个模糊的问题/对我来说,在一分钟内,它有可能只是一次刮整页,而不是必须知道每个单独的标签?因此,我的输出将是一个名为“标识”的字典,其中包含名称、登录号、类型等作为键。然后是一本名为“药理学”的词典,以指征、结构指示等作为关键词,然后另一本名为“相互作用”的词典,另一本称为“制药经济学”等,每页一本词典?谢谢
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-17 15:45:07

页面上实际上没有带有synonymsSynonyms类属性值的元素。

通过使用dt元素的“向右”和“同义词”文本,您可以使用following-sibling获得同义词。

代码语言:javascript
复制
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']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49881728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档