PHP Web抓取Javascript生成的内容

 mobiledu2502925077 发布于 2023-02-06 15:44

我在项目中遇到了一个刮擦任务.

我想从$ html中的链接中获取数据,tr和td的所有表内容,这里我试图抓住链接但它只显示javascript:self.close()

find('a') as $element)
   echo $element->href . '
'; ?>

LSerni.. 7

通常,这种页面会加载一堆Javascript(jQuery等),然后构建接口并检索要从数据源显示的数据.

因此,您需要做的是使用Firebug等工具在Firefox或类似页面中打开该页面,以查看实际执行的请求.如果幸运的话,您可以直接在XHR请求列表中找到它.在这种情况下:

http://www.govliquidation.com/json/buyer_ux/salescalendar.js

请注意,此行为可能会侵犯某些许可或使用条款.在继续之前,请与网站管理员/数据源/版权所有者明确这一点:检测并禁止这种抓取非常容易,并且识别您的情况可能只是略微减少.

无论如何,如果你在PHP中发出相同的调用,你可以使用非常简单的代码直接刮取数据(假设没有会话/身份验证问题,就像这里的情况一样):


这将生成一个数据对象,您可以通过简单循环检查并转换为CSV.

stdClass Object
(
    [result] => stdClass Object
        (
            [events] => Array
                (
                    [0] => stdClass Object
                        (
                            [yahoo_dur] => 11300
                            [closing_today] => 0
                            [language_code] => en
                            [mixed_id] => 9297
                            [event_id] => 9297
                            [close_meridian] => PM
                            [commercial_sale_flag] => 0
                            [close_time] => 01/06/2014
                            [award_time_unixtime] => 1389070800
                            [category] => Tires, Parts & Components
                            [open_time_unixtime] => 1388638800
                            [yahoo_date] => 20140102T000000Z
                            [open_time] => 01/02/2014
                            [event_close_time] => 2014-01-06 17:00:00
                            [display_event_id] => 9297
                            [type_code] => X3
                            [title] => Truck Drive Axles @ Killeen, TX
                            [special_flag] => 1
                            [demil_flag] => 0
                            [google_close] => 20140106
                            [event_open_time] => 2014-01-02 00:00:00
                            [google_open] => 20140102
                            [third_party_url] =>
                            [bid_package_flag] => 0
                            [is_open] => 1
                            [fda_count] => 0
                            [close_time_unixtime] => 1389045600

你检索$data->result->events,使用fputcsv()转换为数组形式的项目,鲍勃是你的叔叔.

1 个回答
  • 通常,这种页面会加载一堆Javascript(jQuery等),然后构建接口并检索要从数据源显示的数据.

    因此,您需要做的是使用Firebug等工具在Firefox或类似页面中打开该页面,以查看实际执行的请求.如果幸运的话,您可以直接在XHR请求列表中找到它.在这种情况下:

    http://www.govliquidation.com/json/buyer_ux/salescalendar.js
    

    请注意,此行为可能会侵犯某些许可或使用条款.在继续之前,请与网站管理员/数据源/版权所有者明确这一点:检测并禁止这种抓取非常容易,并且识别您的情况可能只是略微减少.

    无论如何,如果你在PHP中发出相同的调用,你可以使用非常简单的代码直接刮取数据(假设没有会话/身份验证问题,就像这里的情况一样):

    <?php
    
        $url = "http://www.govliquidation.com/json/buyer_ux/salescalendar.js";
    
        $json = file_get_contents($url);
    
        $data = json_decode($json);
    
    ?>
    

    这将生成一个数据对象,您可以通过简单循环检查并转换为CSV.

    stdClass Object
    (
        [result] => stdClass Object
            (
                [events] => Array
                    (
                        [0] => stdClass Object
                            (
                                [yahoo_dur] => 11300
                                [closing_today] => 0
                                [language_code] => en
                                [mixed_id] => 9297
                                [event_id] => 9297
                                [close_meridian] => PM
                                [commercial_sale_flag] => 0
                                [close_time] => 01/06/2014
                                [award_time_unixtime] => 1389070800
                                [category] => Tires, Parts & Components
                                [open_time_unixtime] => 1388638800
                                [yahoo_date] => 20140102T000000Z
                                [open_time] => 01/02/2014
                                [event_close_time] => 2014-01-06 17:00:00
                                [display_event_id] => 9297
                                [type_code] => X3
                                [title] => Truck Drive Axles @ Killeen, TX
                                [special_flag] => 1
                                [demil_flag] => 0
                                [google_close] => 20140106
                                [event_open_time] => 2014-01-02 00:00:00
                                [google_open] => 20140102
                                [third_party_url] =>
                                [bid_package_flag] => 0
                                [is_open] => 1
                                [fda_count] => 0
                                [close_time_unixtime] => 1389045600
    

    你检索$data->result->events,使用fputcsv()转换为数组形式的项目,鲍勃是你的叔叔.

    2023-02-06 15:48 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有