在开始之前,请务必了解以下几点:

wordpress输入网址采集单个网页
(图片来源网络,侵删)
  1. 版权问题:直接抓取他人网站的内容并发布可能涉及侵犯版权,请确保你有权使用这些内容,或者只抓取允许抓取的内容(使用官方 API 的网站),最好的做法是抓取摘要,并附上原文链接,作为“文章聚合”或“内容索引”。
  2. 网站服务条款:许多网站的服务条款禁止未经授权的抓取行为,频繁或大量的抓取可能会对你的服务器 IP 地址进行封禁。
  3. 技术风险:目标网站的结构可能会随时更改,这会导致你的抓取规则失效,需要重新配置。

使用 WordPress 插件(最简单、推荐)

对于大多数用户来说,使用现成的插件是最佳选择,它们通常有图形界面,操作简单,且能处理大部分情况。

推荐插件:WP RSS Aggregator (主要用于 RSS,但可扩展) 或 All in One WP Migration (用于完整迁移)

更直接符合你需求的插件是 WP ScraperContent Egg 这类专门用于内容抓取的插件,这里我以一个功能强大且灵活的插件 WP RSS Aggregator 为例,因为它非常流行,并且通过其扩展可以实现你想要的功能,另一个更直接的选项是 Web Scraper by WPManageNinja

Web Scraper by WPManageNinja 为例的详细步骤:

这个插件专门为抓取网页内容而设计,非常直观。

  1. 安装插件

    wordpress输入网址采集单个网页
    (图片来源网络,侵删)
    • 在你的 WordPress 后台,导航到 插件 > 安装插件
    • 搜索 “Web Scraper by WPManageNinja”。
    • 点击“立即安装”,然后激活插件。
  2. 创建新的抓取任务

    • 激活后,在左侧菜单中会出现一个新的选项 Web Scraper
    • 点击进入,然后点击 “Add New Scraper” (添加新的抓取器)。
  3. 配置抓取器

    • 名称:给你的抓取任务起一个名字,我的科技博客采集”。
    • URL:在这里输入你想要采集的网页网址,https://example.com/some-article
    • 抓取模式:选择你想要抓取的内容类型,通常你会选择:
      • 文章:它会尝试自动识别标题、内容、特色图片等。
      • 自定义:如果你需要抓取页面上的特定元素(比如某个 div、某个列表),可以选择这个模式,并使用 CSS 选择器来定位元素。
  4. 映射

    • 这是核心步骤,你需要告诉 WordPress 将抓取到的内容放到文章的哪个位置。
    • 插件通常会自动识别,如果没有,你可以使用浏览器的“检查元素”功能,找到标题标签的 CSS 选择器(h1.entry-title)并填入。
    • 同样,插件会尝试抓取正文,如果失败,你需要手动找到正文所在的容器(div.post-contentarticle p)并将其 CSS 选择器填入。
    • 特色图片:选择文章中的哪张图片作为特色图片,你可以设置规则,抓取第一张图片”或“抓取特定 class 的图片”。
    • 发布状态:选择“已发布”、“待审核”或“草稿”。
    • 作者:选择文章的作者。
    • 分类:选择或创建文章的分类。
    • 可以设置为从标题中自动提取,或者留空。
  5. 保存并运行抓取

    wordpress输入网址采集单个网页
    (图片来源网络,侵删)
    • 配置完成后,点击 “Save Scraper” 保存任务。
    • 然后点击 “Run Scraper” (运行抓取器)。
    • 插件会访问你指定的网址,根据你的规则抓取内容,并自动创建一篇新文章。
  6. **自动化设置(可选):

    • 如果你希望定期自动抓取该网页的内容(如果它是一个博客的 RSS 源或会定期更新的页面),你可以在抓取器设置中配置一个 定时任务,每天一次”或“每周一次”。

使用代码(适合开发者)

如果你熟悉 PHP,并且希望获得更灵活、更强大的控制,可以通过编写自定义代码来实现,这通常需要使用到 PHP 的 DOMDocumentDOMXPath 类来解析 HTML。

警告:此方法需要修改主题的 functions.php 文件或创建一个自定义插件,操作不当可能导致网站出错。请务必先备份你的网站!

以下是一个简单的示例代码,它会抓取一个网页的标题和第一个段落,并创建一篇 WordPress 文章。

/**
 * 通过 URL 抓取网页内容并创建 WordPress 文章
 *
 * @param string $url 要抓取的网页 URL
 */
function scrape_and_create_post($url) {
    // 1. 获取网页内容
    $response = wp_remote_get($url);
    // 检查请求是否成功
    if (is_wp_error($response) || wp_remote_retrieve_response_code($response) !== 200) {
        error_log('无法获取 URL: ' . $url);
        return;
    }
    $html = wp_remote_retrieve_body($response);
    // 2. 创建 DOMDocument 对象并加载 HTML
    // 使用 @ 符号抑制因为 HTML5 标签可能产生的警告
    $dom = new DOMDocument();
    libxml_use_internal_errors(true); // 禁用 libxml 错误,因为很多 HTML 页面格式不标准
    $dom->loadHTML($html);
    libxml_clear_errors();
    // 3. 使用 DOMXPath 查询 HTML 元素
    $xpath = new DOMXPath($dom);
    // 4. 提取数据 (这里需要根据目标网页的 HTML 结构进行修改)
    // 获取标题 (通常是 <h1> 标签)
    $title_node = $xpath->query('//h1')->item(0);
    $post_title = $title_node ? $title_node->nodeValue : '无标题';
    // 获取正文 (这里假设正文在 <article> 标签内)
    // 你需要用浏览器的“检查元素”功能找到正确的选择器
    $content_node = $xpath->query('//article')->item(0); 
    $post_content = $content_node ? $dom->saveHTML($content_node) : '无法提取内容。';
    // 5. 准备文章数据
    $post_data = array(
        'post_title'    => wp_strip_all_tags($post_title), // 清理 HTML 标签
        'post_content'  => $post_content,
        'post_status'   => 'publish', // 发布状态: publish, draft, pending
        'post_author'   => 1,         // 作者 ID
        'post_category' => array(8),  // 分类 ID
        'post_excerpt'  => wp_trim_words($post_content, 55, '...'), // 自动生成摘要
    );
    // 6. 创建文章
    $post_id = wp_insert_post($post_data);
    if ($post_id > 0) {
        error_log('成功创建文章,ID: ' . $post_id);
        // 你可以在这里添加更多逻辑,比如抓取并设置特色图片
    } else {
        error_log('创建文章失败');
    }
}
// --- 如何使用这个函数 ---
// 在主题的 functions.php 文件底部添加以下代码来测试:
// scrape_and_create_post('https://example.com/the-page-you-want-to-scrape');

如何使用代码方法:

  1. 通过 FTP 或主机控制面板访问你的 WordPress 安装目录。
  2. 导航到 /wp-content/themes/你的主题名称/
  3. 找到 functions.php 文件并下载备份。
  4. 在文件末尾 ?> 之前添加上面的代码。
  5. 修改代码中的 $url 变量为你想要抓取的网址。
  6. 最重要的:修改 // 4. 提取数据 部分的 CSS 选择器(如 //h1, //article),使其与目标网页的 HTML 结构匹配,这是最需要耐心调试的一步。
  7. 保存文件并上传回服务器,访问你的网站一次,函数就会被触发。

总结与建议

特性 插件方法 代码方法
易用性 极高,图形化界面,无需编程知识 ,需要懂 PHP、HTML 和 CSS 选择器
灵活性 较高,但受限于插件功能 极高,可以完全自定义抓取逻辑
维护成本 低,插件作者会更新