【问题标题】:How to scrape data from DropDown Menu如何从下拉菜单中抓取数据
【发布时间】:2015-09-16 09:01:53
【问题描述】:

如何从下拉菜单in a website 中获取所有值? 例如在这个网站上

有这个下拉菜单:

我想获取所有值并将其保存到一个数组结构中,该结构也具有相关国家的链接,例如:

Afghanistan => http://it.soccerway.com/national/afghanistan/afghan-premier-league/2015/regular-season/r32792/
Albania => http://it.soccerway.com/national/albania/super-league/20152016/regular-season/r31891/
Algeria => http://it.soccerway.com/national/algeria/ligue-1/20152016/regular-season/r31583/
...

我怎样才能达到这个结果?

【问题讨论】:

  • 如果您尝试从中获取数据的站点允许这种操作,它可能有一个 API,您可以访问该 API 来检索此数据。你检查过这种可能性吗?
  • 在网站的条款和条件中允许免费使用数据,所以没有问题。此外,该网站不提供任何 API,所以我正在尝试创建自己的。

标签: javascript


【解决方案1】:

这也可能有帮助(使用一行 PHP):jQuery load external site page

jsBin

检查元素,右键单击并复制 HTML,将其粘贴到您的 .html 文件中。
下面是该 HTML 结构的一瞥:

<ul class="list hidden">
   <li>Club Domestic (1085)</li>
   <li data-value="/national/afghanistan/a8/?ICID=SN_02_01">Afghanistan (1)</li>

var LI = document.querySelectorAll(".list li");
var result = {};

for(var i=0; i<LI.length; i++){
  var el = LI[i];
  var elData = el.dataset.value;
  if(elData) result[el.innerHTML] = elData; // Only if element has data-value attr
}

console.log( result );

【讨论】:

  • 有趣的解决方案。只有一件事:有可能下载所有的 html 页面并访问这个特定的元素吗?因为该站点可能会更改菜单中的值..
  • 是的,使用 PHP 和 file_get_contents 函数。因此,基本上您将该页面的内容添加到 yoru Web 域中(这样您就不会遇到任何跨站点 AJAX 问题),而不是一旦该页面在您的服务器上,您就可以轻松地从该页面获取所需的元素。
  • 那么抓取网站内容的最佳方式是使用 PHP 吗?因为我看到网站结构,特别是表格,是json格式的。
  • @Bender 看到我的这个答案:stackoverflow.com/questions/14999573/…
  • @Bender 同样的东西。获取该 JSON 文件的路径并以相同的方式使用 PHP。重要的是,如果他们没有任何 API 或限制 JSONP,那么您不能在不使用 PHP 或其他服务器端语言的情况下简单地 AJAX 外部网站的内容。
猜你喜欢
  • 2019-10-31
  • 1970-01-01
  • 2019-04-05
  • 2020-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多