【问题标题】:python scrape webpage and parse the contentpython抓取网页并解析内容
【发布时间】:2017-03-24 14:31:48
【问题描述】:

我想抓取这个链接上的数据

http://www.realclearpolitics.com/epolls/json/5491_historical.js?1453388629140&callback=return_json

我不确定这个链接是什么类型的,是 html 还是 json 或其他。抱歉我的网络知识不好。但我尝试使用以下代码进行抓取:

import requests

url='http://www.realclearpolitics.com/epolls/json/5491_historical.js?1453388629140&callback=return_json'
source=requests.get(url).text

源的类型是 unicode。我也尝试使用 urllib2 来抓取:

source2=urllib2.urlopen(url).read()

source2 的类型是字符串。我不确定哪种方法更好。因为链接不像普通网页那样包含不同的标签。如果我想清理抓取的数据并形成dataframe数据(如pandas dataframe),我应该遵循什么方法或流程/

谢谢。

【问题讨论】:

  • @depperm,感谢您的回复。我更新链接。它现在应该可以工作了。

标签: python json parsing web-scraping data-cleaning


【解决方案1】:

返回的响应是包含有效 JSON 数据的文本。如果需要,您可以使用http://jsonlint.com/ 等服务自行验证。为此,只需复制括号内的代码

return_json("要复制的 JSON 代码")

为了利用这些数据,您只需在程序中解析它。这里是一个例子:https://docs.python.org/2/library/json.html

【讨论】:

  • 这就是我写的。括号内的内容是您需要的 JSON 数据。这是有效的。我使用我指出的服务对其进行了验证。
  • 我提供了代码答案而不是链接。 OP 不需要手动复制那个长响应
  • 我并不是说您需要在代码中手动复制 JSON 响应。我只是想证明它是有效的 JSON。只需从响应中提取 JSON 数据并在代码中执行您需要的操作。如果您需要帮助处理来自 python 的 json 数据,我建议您阅读官方文档:docs.python.org/2/library/json.html
  • 我不需要链接。我只是说你的答案可能会更好(如示例代码以及链接)
  • 感谢您的回复。我现在可以确认它是 json 页面。
【解决方案2】:

响应是文本。它确实包含JSON,只需要提取它即可

import json

strip_len = len("return_json(")

source=requests.get(url).text[strip_len:-2]
source = json.loads(source) 

【讨论】:

  • 感谢您的回复。我以前试过这个方法,但我不知道我应该去掉'return_json('。一条评论,第3行的正确代码应该是source=requests.get(url).text[strip_len:-2],而不是-1。
  • 我看不到响应的结尾,但是是的,你应该去掉它,因为它不是 JSON 的一部分
  • 基本上,该 URL 正在返回一些旨在由 javascript 而非 python 查询的内容。 stackoverflow.com/a/7613857/2308683
猜你喜欢
  • 2021-02-28
  • 2019-07-19
  • 2020-05-24
  • 2010-10-09
  • 1970-01-01
  • 2019-11-05
相关资源
最近更新 更多