你有一个论坛(vbulletin)有一堆图像 - 有一个页面访问一个线程,逐步浏览每个页面并转发给用户(通过ajax或其他)图像是多么容易。我不是在问过滤(当然这很容易)。
一天可行吗? :)
我有一个使用codeigniter的网站 - 使用它会更简单吗?
答案 0 :(得分:2)
假设这是在服务器上执行的,curl + regexp是你的朋友..并且是的...在一天之内可行......
还有一些open-source HTML parsers可能会使这个更清洁
答案 1 :(得分:0)
这取决于您的抓取脚本的运行位置。
如果它与论坛软件在同一台服务器上运行,您可能需要直接访问数据库并检查其中的图像链接。我不熟悉vbulletin,但可能它提供了一个允许高级数据库访问的插件api。这样可以简化查询帖子中的所有帖子。
但是,如果您的脚本在不同的计算机上运行(或者换句话说,与论坛软件无关),则必须充当http客户端。它可以获取线程的所有页面(通过在页面中搜索NEXT链接自动获取,或者通过将所有页面指定为参数手动获取)并在html源代码中搜索图像标记(<img .../>
)。
然后可以使用正则表达式来提取图像URL。最后,脚本可以使用这些图像URL构建显示所有这些图像的另一个页面,或者可以下载它们并创建一个包。
在第二种情况下,脚本实际上充当“蜘蛛”,因此它应该尊重robots.txt或meta标签之类的内容。
答案 2 :(得分:0)
执行此操作时,请务必对提取进行限速。您不希望通过每秒请求多个页面来使论坛服务器超载。最简单的方法是在每次获取之间休息X秒。
答案 3 :(得分:0)
一天是可行的
由于您已经使用了CI设置,我会使用它。
我会使用以下方法:
1)在CI中建立一个能够:
的模型2)在控制器中创建一个收集所有图像的方法
3)设置一个定期收集图像的cronjob。 wget -o /tmp/useless.html http://localhost/imageminer/collect应该做得很好
4)使用db表编写为最终用户输出漂亮html的代码以获取图像。