【问题标题】:How to convert a URL Request into a pandas DataFrame?如何将 URL 请求转换为 pandas DataFrame?
【发布时间】:2015-06-16 05:21:46
【问题描述】:

我正在尝试访问this page 上提供的“收益率曲线数据”。它有单选按钮,单击“提交”后会生成一个 CSV 文件,我希望从中获取数据。我希望从“检索所有数据”选项中获取数据。我想将此数据转换为dataframe。但是,我不知道如何将result(即<addinfourl at 149347464L whose fp = <socket._fileobject object at 0x0000000008E55660>>)转换为dataframe

import urllib, urllib2
import csv
import urllib2
import StringIO
import pandas as pd
my_url = 'http://www.bankofcanada.ca/rates/interest-rates/bond-yield-curves/'
data = urllib.urlencode({'lastchange': 'all'}) 
request = urllib2.Request(my_url, data)
result = urllib2.urlopen(request)
print result #Output: <addinfourl at 149347464L whose fp = <socket._fileobject object at 0x0000000008E55660>>

编辑:参考 Kevin Zhao 的问题,部分输出如下。另外,我使用的想法与this post 的答案中给出的想法相同。但是,在提交表单时捕获数据似乎是个问题:

!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">

【问题讨论】:

  • 你能试着把这段代码放在底部吗? print result.read() 并向我们展示该行的结果?这可能有助于调试...
  • @KevinZhao 谢谢。我已经发布了您建议的部分输出
  • 所以您在点击按钮后尝试从网站或从该网站下载的 csv 文件获取数据?
  • 您打开的是网页,而不是数据文件。我建议检查 chrome 开发工具(或类似工具)中的按钮,看看您是否可以找出按钮请求的 url。
  • @KevinZhao 单击按钮后,我正在尝试从从网站下载的 CSV 文件中获取数据。

标签: python pandas


【解决方案1】:

谢谢!所以如果我理解正确的话,你想打开一个页面,点击页面上的一个按钮,然后下载一个文件?如果是这种情况,使用 selenium 可能比 urllib2 效果更好,有关如何使用它的信息,请参阅此链接:

http://www.reddit.com/r/Python/comments/1nk0r4/python_library_for_automating_interaction_with_a/

【讨论】:

  • 然后就可以打开csv文件抓取数据了
  • 如果这回答了您的问题,请标记为正确 ;-) 非常感谢
  • 谢谢。但我的印象是splinterselenium 都只能与Firefox 一起使用?但是,我需要更灵活的代码。
  • 嗯,它实际上支持很多不同的浏览器docs.seleniumhq.org/about/platforms.jsp
  • 你是对的,splinter 可能无法与 splinter 一起使用,但 selenium 有另一个可以使用的包,如上面的链接所示......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-20
  • 2013-05-25
  • 2022-09-29
  • 2017-03-17
  • 2017-03-23
  • 1970-01-01
  • 2017-07-14
相关资源
最近更新 更多