【问题标题】:Post API search with Python使用 Python 发布 API 搜索
【发布时间】:2017-05-09 07:45:31
【问题描述】:

我正在尝试从该网站上抓取所有新闻项目。它们没有显示在源代码中:http://www.uvm.dk/aktuelt

我尝试过使用 Firefox 的 LIVE Http Headers 和 Chrome 的开发者工具,但仍然无法弄清楚幕后发生了什么。我敢肯定这很简单:-)

我有这些信息,但我如何使用它们来抓取想要的新闻?

http://www.uvm.dk/api/search

请求方法:POST

连接:保持活动状态 PageId=8938bc1b-a673-4513-80d1-e1714ca93d7c&Term=&Years%5B%5D=2017&WorkAreaIds=&SubjectIds=&TemplateIds=&NewsListIds%5B%5D=Emner&TimeSearch%5BEvaluation%5D=&FlagSearch%5BEvaluation%5D=Alle&Department&=LRootNames=&Letters= da&PageSize=10&Page=1

谁能帮忙?

【问题讨论】:

  • 也许贴一些代码?

标签: python api search web-scraping


【解决方案1】:

不是直接的答案,而是一些提示。

您使用 livehttpheaders 的方法很好。加载首页前打开侧边栏,全部清除。然后加载主页和一篇文章。由于图像、css 和 js,通常会有大量的 http 请求。但是您将能够找到少数有用的。通常第一个是主页,下面的某个地方是文章主页。另一个有趣的是单击下一页时的那个。

我喜欢将下载 (HTTP) 和抓取(HTML 或 JSON 左右)解耦。 我用第一个脚本下载到一个文件,然后用第二个脚本报废。 首先是因为我希望能够在不反复下载的情况下调整抓取。其次,因为我更喜欢使用 bash+curl 下载和 python+lxml 报废。如果我需要抓取信息继续下载,我的抓取脚本会在控制台上输出。

【讨论】:

  • 感谢您的回复。我再次尝试了 LIVE Http Headers,现在我得到了它:-) 结果我忘记了 POST 中所需的参数之一。结果如下所示: import requests params = {'xxx': 'xxx', 'xxx': 'xxx', etc} r = requests.post("uvm.dk/api/search", data=params) print (r.text )
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-06
  • 1970-01-01
  • 2014-04-23
  • 1970-01-01
  • 1970-01-01
  • 2016-05-09
相关资源
最近更新 更多