使用python+beautifulSoup4从动态图中获取数据

2024-09-27 21:24:37 发布

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

我需要实现一个数据抓取任务并从动态图中提取数据。这张图是随着时间的推移而更新的,类似于你看一家公司股票的图表。我使用的是python中的requests和beautifulsoup4库,但我只知道如何获取文本和链接数据。似乎不知道如何将图形的值放入csv文件

有问题的图可以在-http://www.apptrace.com/app/instagram/id389801252/ranks/topfreeapplications/36找到


Tags: 文件csv数据文本http图形链接www
3条回答

@Oliver W.已经提供了一个很好的答案,但是使用requestslink here)可以避免记录网络呼叫,而且总体上比urllib好得多。在

如果你想让你的代码更灵活一点,你可以写一个函数,它接受国家名称和开始和结束日期。在

import requests
import pandas as pd
import json

def load_data(country='', start_date='2014-08-09', end_date='2014-11-1'):
    base = "http://www.apptrace.com/api/app/389801252/rankings/country/"
    extra = "?country={0}&start_date={1}&end_date={2}&device=iphone&list_type=normal&chart_subtype=iphone"
    addr = base + extra.format(country, start_date, end_date)

    page = requests.get(addr)
    json_data = page.json() #gets the json data from the page
    ranks = json_data['rankings'][0]['ranks']
    ranks = json.dumps(ranks)  #Ensures it has valid json format
    df = pd.read_json(ranks, orient='records')
    return df

改变网页上的内容,看看你能从这个国家获得什么样的价值(例如加拿大是“可以”)。空弦是给美国的

df看起来像这样

^{2}$

有了pandas数据帧,您可以在导出之前导出到csv或合并多个数据帧

df = load_data()
df.to_csv("file_name.csv")

如果有正确的URL,就可以很容易地从图中获取数据。你可以很容易地找到这个地址,比如firefox中的“开发者工具”(查看XHR请求的“网络”选项卡)。在

您将看到有人打电话给,例如:

src = 'http://www.apptrace.com/api/app/389801252/rankings/country/?country=CAN&start_date=2014-08-08&end_date=&device=iphone&list_type=normal&chart_subtype=iphone'

如果您调用它,您将收到一个JSON回复,您可以轻松地将其加载到python中:

^{2}$

然后可以使用python的内置csv module将数据存储到csv中。在

你能提供一个链接供参考吗。这取决于图形的存储和显示方式。从它像股票行情机一样动态来看,你可以在一些标签之间找到一些文本。我看过一些使用靓汤从网站获取图片和其他内容的例子,所以这并非不可能。在

昨天我正在将数据格式化为CSV格式,并立即得到了一些非常有用的响应。在

看看:How can I format every other line to be merged with the line before it? (In Python)

另外,我在这里学到的是,如果您需要获取这些数据,通常自动运行脚本的好方法是CRON作业。在

相关问题 更多 >

    热门问题