【问题标题】:how to parsing json var inside script tag如何解析脚本标签内的json var
【发布时间】:2018-05-18 17:35:34
【问题描述】:

我正在尝试抓取https://www.proteinatlas.org/ENSG00000167286-CD3D/pathology/tissue/renal+cancer中散点图中显示的数据

javascript在

'<script> var plot = $('#scatter6001').scatterPlot({"Alive (n=651)":{"symbol":"circle","data":[{"x":0.407889650408,"y":12.811,"tooltip":"TCGA-KL-8324-01A<br>Female\/ Stage ii \/ Alive<br>FPKM: 0.4<br>Living days: 4676 (12.8 years)","class":"stage_ii sex_f best_low median_low"},{"x":0.587835812523,"y":8.0795,"tooltip":"TCGA-KL-8334-01A<br>Female\/ Stage iii \/ Alive<br>FPKM: 0.6<br>Living days: 2949 (8.1years)","class":"stage_iii sex_f best_low median_low"}'...});

我的问题是如何解析TCGA-XX-XXXX-XXX中的信息,性别,阶段,生死,FPKM和生活天数?以及如何将这些信息保存在 csv 文件中?

这是我做的代码。

page = urlopen("https://www.proteinatlas.org/ENSG00000167286-CD3D/pathology/tissue/prostate+cancer#imid_3605750")
content = page.read()
soup = BeautifulSoup(content,'lxml')

table = soup.find('div', {'id':'scatter6001'})
print(table)

p = re.search(r"var plot = (.*?);",soup).group(1)
print(p)

代码有一些错误,是

Traceback(最近一次调用最后一次):文件“scrap2.py”,第 24 行,在 p = re.search(r"var plot = (.*?);",soup).group(1) 文件“C:\Python34\lib\re.py”,第 170 行,在搜索中 return _compile(pattern, flags).search(string) TypeError: expected string or buffer

如何解决这个问题,把我想要的数据报废?

谢谢

【问题讨论】:

  • 你的内容好像是空的。
  • 是的,我知道,但是如何删除我想要内容的信息?
  • 向我展示您对单个集合的预期输出。这并不难,但你必须经历一些丑陋的字符串操作。

标签: javascript python json web-scraping beautifulsoup


【解决方案1】:

遵守绝对不是一个好主意,但它会为您获取所需的数据。

import requests
from bs4 import BeautifulSoup

page = requests.get("https://www.proteinatlas.org/ENSG00000167286-CD3D/pathology/tissue/prostate+cancer#imid_3605750")
soup = BeautifulSoup(page.text,'lxml')
item_text = soup.select('#scatter6001 script')[0].text
for x in range(1,100):            #be sure to put the highest range in place of 100
    item = item_text.split('tooltip')[x].split("class")[0].replace('"','').replace(',','').replace(':','').replace("<br>"," ").replace("/","").replace("\\","")
    print(item)

部分输出:

TCGA-KK-A7B3-01A Male  Stage not reported  Alive FPKM 5.5 Living days 899 (2.5 years)
TCGA-G9-6347-01A Male  Stage not reported  Alive FPKM 14.2 Living days 2089 (5.7 years)
TCGA-KC-A4BL-01A Male  Stage not reported  Alive FPKM 3.8 Living days 934 (2.6 years)
TCGA-KK-A7AQ-01A Male  Stage not reported  Alive FPKM 2.6 Living days 1610 (4.4 years)

【讨论】:

    猜你喜欢
    • 2019-03-06
    • 2015-07-14
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多