【问题标题】:Automatically upload table to database [closed]自动将表上传到数据库[关闭]
【发布时间】:2015-09-19 08:49:32
【问题描述】:

我怎样才能将像page 这样的表中的数据自动上传到数据库?我可以使用他们的“导出”功能,然后手动下载 .csv 文件并上传,但如果我每天都想要每个游戏的数据,那就很痛苦了……你认为可以自动化吗?唯一的解决方案是抓取他们的网站?

谢谢

【问题讨论】:

  • 他们有 API 吗?
  • 抓取违反了他们的使用条款 “请不要尝试从我们的网站抓取数据,因为抓取违反了管理您使用我们网站的条款和条件”
  • 这就是为什么我不想!我正在寻求其他解决方案... ;) 不,没有 API!
  • 那我觉得你倒霉了:)

标签: php mysql web-scraping


【解决方案1】:

您可以使用 PHP 的 cURL 库。

这里有一个例子:

<?php
    $ch = curl_init();
    $timeout = 0; // set to zero for no timeout
    $url = 'http://www.basketball-reference.com/boxscores/201506160CLE.html'; // set the page url
    curl_setopt ($ch, CURLOPT_URL, $url);//enter your url here
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $file_contents = curl_exec($ch); //get the page contents
    include "simple_html_dom.php";
    $table = $file_contents;
    $html = str_get_html($table);
    $printing = false;
    //header('Content-type: application/ms-excel');
    $fp = fopen("php://output", "w");
    foreach($html->find('tr') as $element){
        $arr = array();
        foreach ($element->find('tr') as $element2) {
                    if(!$printing)
                        $printing = strpos($element2,'Scoring') !== false;
                    if($printing){
                        //echo $element2 -> plaintext . "<br>";
                        $arr[] = $element2 -> plaintext; //comment here
                    }

        }
        fputcsv($fp, $arr);
        }

        fclose($fp);
    ?>

您必须从here 下载文件。 您会在页面中获得一个 text/csv 文件,如果您喜欢纯文本就足够了 switch cmets(请求的评论行并取消其他人的评论)

您可以根据需要解析新的 csv

【讨论】:

  • 你能举个例子吗?
  • 当然!我编辑了我的帖子
猜你喜欢
  • 2015-08-31
  • 2020-08-02
  • 2013-01-17
  • 2012-06-10
  • 1970-01-01
  • 1970-01-01
  • 2017-11-20
  • 1970-01-01
  • 2017-08-16
相关资源
最近更新 更多