Php 抓取页面时动态生成的图像

Php 抓取页面时动态生成的图像,php,ruby,web-scraping,Php,Ruby,Web Scraping,我正在尝试从旧数据库中捕获一些图像 在编写scraper时,我使用ruby(但对php也很熟悉)直接打开一个网站并阅读其内容。我有时还使用脚本调用相应的curl…命令 但是,我正在从中提取一些片段的数据库会返回一个页面,然后使用服务器端脚本假定的一系列随机数,使用图像名称嵌入目标图像。例如: 如果脚本(例如show_image.jsp)正在执行一个简单的引用检查,您可以通过编写PHP(或Ruby)刮板来解决此问题,以便在执行GET之前设置引用: curl --referer http://www

我正在尝试从旧数据库中捕获一些图像

在编写scraper时,我使用ruby(但对php也很熟悉)直接打开一个网站并阅读其内容。我有时还使用脚本调用相应的
curl…
命令

但是,我正在从中提取一些片段的数据库会返回一个页面,然后使用服务器端脚本假定的一系列随机数,使用图像名称嵌入目标图像。例如:

如果脚本(例如show_image.jsp)正在执行一个简单的引用检查,您可以通过编写PHP(或Ruby)刮板来解决此问题,以便在执行GET之前设置引用:

curl --referer http://www.example.com http://www.example.com/show_image.jsp?bar.jpg

您可能应该使用mechanize在ruby中抓取网站。当您这样做时,它将为您设置cookies和referer,因此获取图像将非常容易:

agent.get(image_url).save_as 'local_filename.jpg'

我怀疑您可以直接调用脚本(show_image.jsp?343523.jpg),您可能只需要将站点URL指定为引用者。这实际上就是当你的浏览器加载整个页面时发生的情况。这可能适合你。。。如果可以在浏览器中访问它,则可以访问它。最终脚本不可能知道。也许你需要像@drew010指出的那样欺骗推荐人,或者你需要设置用户代理、cookie,或者其他一些请求头。但它绝对是可以编写脚本的。referer的想法很好,但不太管用。我尝试了使用
curl--referer
,但结果与直接在浏览器中加载图像时相同。我认为,当你加载整个页面时,幕后正在发生一些事情。事实上,每次重新加载页面时,图像的id都会发生变化。可能有一些JavaScript让浏览器向show_图像脚本发送带有一些验证字段的POST请求。你介意提供网站的URL吗?推荐人的想法很好,但不管用。图像的id号也会随着每次重新加载而变化——我怀疑它是通过aspx页面本身动态生成的,可能只加载一次?因此,我有一些如何需要调用aspx页面和抓取它的图像一起…但谢谢你的尝试!