【问题标题】:What tool for scraping in LaravelLaravel 用什么工具来抓取
【发布时间】:2020-07-12 09:33:47
【问题描述】:

我想在 Laravel 7 中建立一个需要在其他站点中抓取的网站。我必须填写表格并单击。我看到使用 python 是可能的。刮擦将每小时进行一次。我也看到了 Laravel 黄昏,但它在生产环境中不起作用。您建议我使用什么技术?我不知道python,所以我会学习它是否更适应。

谢谢

【问题讨论】:

标签: python php laravel screen-scraping


【解决方案1】:

有很多选择取决于你想做什么。

如果您使用的网站不是 SPA,那么您可以简单地使用 PHP 附带的 DOM 包,您可以使用 curl 获取页面 HTML 并使用 PHP DOM 解析它包。

但是,如果您想浏览网站并浏览某个场景,那么您最好使用 Laravel DuskPuphpteerSelenium 之类的内容。

过去我曾使用过Puphpteer,效果很好,这是一个示例

$puppeteer = new Puppeteer();
$browser = $puppeteer->launch([
    'headless' => true,
    'args' => [
        '--no-sandbox',
        '--disable-setuid-sandbox'
    ]
]);

$page = $browser->newPage();
$page->goto('https://facebook.com');
$page->type('#username', 'email');
$page->type('#pass', 'password');
$page->click('button.btn__primary--large.from__button--floating');

此脚本在无头浏览器中打开 facebook.com,并使用 emailpassword 填充字段,然后单击带有 button.btn__primary--large.from__button--floating 的 css 选择器的按钮

【讨论】:

    【解决方案2】:

    填写表格并点击

    这意味着你必须做一些琐碎的 POST 请求。 PHP curl 擅长:

    $curl = curl_init('http://testing-ground.webscraping.pro/textlist');
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, ['a' => 'abc']);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
    $page = curl_exec($curl); 
    if(curl_errno($curl)) // check for execution errors
    {
        echo 'Scraper error: ' . curl_error($curl);
        exit;
    } 
    curl_close($curl);
    

    更多详情请查看here

    【讨论】:

      猜你喜欢
      • 2022-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-31
      • 2022-01-11
      • 2010-09-12
      相关资源
      最近更新 更多