首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取HTML页面并将其存储在MYSQL中--如何

获取HTML页面并将其存储在MYSQL中--如何
EN

Stack Overflow用户
提问于 2010-05-03 21:04:36
回答 4查看 11.8K关注 0票数 14
  • 将带有CSS的格式化html页面存储到MYSQL数据库的最佳方法是什么?有可能吗?
  • 列的类型应该是什么?如何检索存储的格式化HTML并使用PHP正确显示?
  • 如果我想要获取的页面有图片和视频,那么显示我将页面存储为blob。
  • 使用PHP-CURL,fopen,.--获取页面的最佳方法是什么?

很多问题,伙计们,但我真的需要你的帮助,让我走上正确的道路。

非常感谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-04 18:06:39

很简单,试试我为你做的代码。

获取并保存DB中的源代码是最基本的。

我没有把错误处理或者别的什么都放进去,暂时保持简单.

我没有创建函数来显示结果,但是您可以打印$source来查看结果。

希望这能帮到你。

代码语言:javascript
运行
复制
<?php

function GetPage($URL)
{
    #Get the source content of the URL
    $source = file_get_contents($URL);

    #Extract the raw URl from the current one
    $scheme = parse_url($URL, PHP_URL_SCHEME); //Ex: http
    $host = parse_url($URL, PHP_URL_HOST); //Ex: www.google.com
    $raw_url = $scheme . '://' . $host; //Ex: http://www.google.com

    #Replace the relative link by an absolute one
    $relative = array();
    $absolute = array();

    #String to search
    $relative[0] = '/src="\//';
    $relative[1] = '/href="\//';

    #String to remplace by
    $absolute[0] = 'src="' . $raw_url . '/';
    $absolute[1] = 'href="' . $raw_url . '/';

    $source = preg_replace($relative, $absolute, $source); //Ex: src="/image/google.png" to src="http://www.google.com/image/google.png"

    return $source;
}

function SaveToDB($source)
{
    #Connect to the DB
    $db = mysql_connect('localhost', 'root', '');

    #Select the DB name
    mysql_select_db('test');

    #Ask for UTF-8 encoding
    mysql_query("SET NAMES 'utf8'");

    #Escape special chars
    $source = mysql_real_escape_string($source);

    #Set the Query
    $query = "INSERT INTO website (source) VALUES ('$source')"; //Save it in a text row, that's it...

    #Run the query
    mysql_query($query);

    #Close the connection
    mysql_close($db);
}

$source = GetPage('http://www.google.com');

SaveToDB($source);

?>
票数 8
EN

Stack Overflow用户

发布于 2010-05-03 21:57:27

使用fopen拉下整个页面,并解析出任何URL(比如图像和css)。您需要运行一个循环来获取生成页面的文件的每个urls。还可以存储这些文件,并用新链接替换用于链接到其他站点文件的urls。(这将避免任何问题,如果文件应该改变或删除在未来)。

我建议使用blob数据类型,因为它允许将所有文件存储在一个表中,但是您可以使用文本数据类型为页面创建一个表,用blob为另一个页面创建一个表来存储图像和其他文件。

编辑:如果以blob数据类型存储,查看base64_encode()将增加服务器上的存储空间,但您将避免引号和特殊字符的任何问题。

票数 1
EN

Stack Overflow用户

发布于 2010-05-04 13:42:56

不要使用关系数据库来存储文件。使用文件系统或NoSQL解决方案。

您可能需要查看各种可用的开源蜘蛛(注意到htdig和httrack )。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2761191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档