定时抓取网页,并保存到指定文件

本文介绍了一个使用C#实现的简单网页定时抓取工具。该工具可通过设置时间间隔自动抓取指定URL的内容,并将其保存到本地指定目录下。支持用户自定义保存文件名及抓取频率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;

namespace Capture
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        Timer timer1 = new Timer();

        private void Form1_Load(object sender, EventArgs e)
        {

        }



        private void btnStop_Click(object sender, EventArgs e)
        {
            timer1.Stop();
            //Application.Exit();
        }

        private void btnStart_Click(object sender, EventArgs e)
        {
            timer1.Interval = int.Parse(txtInter.Text.Trim()) * 1000;
            timer1.Tick += new EventHandler(timer1_Tick);
            timer1.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            string DirName = "";
            string DirPath = txtDir.Text.ToString();
            string CapUrl = txtUrl.Text.Trim();
            HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(CapUrl));
            HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
            StreamReader str = new StreamReader(webResponse.GetResponseStream(), Encoding.GetEncoding("gb2312"));

            string fileName = txtDir.Text.ToString().Substring(txtDir.Text.ToString().LastIndexOf("//") + 1);
              //判断选择的文件夹后面是否有文件名,如果没有则把所抓取网页的文件名加在所选的文件夹后面
            if (fileName == "" || !fileName.Contains(".html") || !fileName.Contains(".htm"))
            {
                string URLName = CapUrl.Substring(CapUrl.LastIndexOf("/") + 1);
                DirPath +="//"+URLName;

            }
             DirName = txtDir.Text.ToString().Substring(0, txtDir.Text.ToString().Length - fileName.Length);

            if (!Directory.Exists(DirName))
            {
                Directory.CreateDirectory(DirName);
            }
            using (FileStream fs = new FileStream(DirPath, FileMode.Create))
            {
                // 创建一个StreamWriter对象,使用UTF-8编码格式
                using (StreamWriter writer = new StreamWriter(fs, Encoding.GetEncoding("gb2312")))
                {
                    writer.Write(str.ReadToEnd());
                    writer.Close();
                }
            }


            str.Close();
            webResponse.Close();

        }

         //用folderBrowserDialog控件选择文件夹,必须先加一个按钮控件做为浏览按钮,一个
          // 文本框控件用于保存选择的文件夹路径
        private void btnBrowse_Click(object sender, EventArgs e)
        {
            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            {
                txtDir.Text = folderBrowserDialog1.SelectedPath;
            }
        }

    }
}

保存web页面。自动将选项卡的html文件保存在选定的目录中。也刷新了页面安排… 保存网页。 自动将选项卡的html文件保存在预定计时器上的所选目录中。 同时刷新计划的计时器上的页面。 请注意,此功能仅在适用于Windows 8和10的Chrome上进行了测试。我有报告说,它不适用于Linux的Chrome,也可能不适用于Apple的Chrome。 因此,请仅在Windows 8或10上使用。我没有对此应用程序进行任何更新,但我仍然亲自使用它,它对我来说非常有用,如下所述。 用作简单的屏幕抓取工具,将网页的html保存文件中。 然后,您可以使用另一个程序解析html文件提取内容。 如果页面使用新内容自动刷新,则内容将保持更新,或者您可以在计时器上自动刷新页面。 1)选择要自动保存的选项卡,打开自动保存扩展名,单击+,它将显示所选的选项卡。 2)从Google下载目录中选择一个子目录(只能使用Chrome扩展程序将下载目录和子目录保存到其中)。 保留空白以保存到下载。 您还可以将Chrome配置为指向计算机/网络上的任何目录作为默认的“下载”目录(“设置”,“高级”)。 然后,自动保存保存到该目录或在自动保存中配置的任何子目录。 3)输入文件名。 即使格式相同,.txt扩展名的保存速度似乎也比.html快。 每次都覆盖相同的文件。 目的是在不创建大量文件的情况下获取最新的网页内容。 4)选择自动保存间隔(以秒为单位)。 5)选择以分钟为单位的自动刷新网页时间。 空白或“从不”将永远不会刷新页面。 该扩展程序会清除Chrome的“下载”信息,仅用于自动保存文件,以防止文件过大为内存问题。 权限:1)阅读更改您访问的网站上的所有数据-必须能够保存网页上的内容-该扩展程序必须首先获取该页面。 我们可以将其限制为单个页面,即您要保存的页面。 但是,这样对其他任何页面都无效。 2)管理您的下载-创建页面的html作为链接,将该链接发送到Chrome以进行下载和保存。 必须管理下载才能做到这一点。 支持语言:English (United States)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值