欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Delphi WebBrowser完成网页自动登录

程序员文章站 2022-03-11 19:13:58
Delphi WebBrowser完成网页自动登录示例...

订制一些WEB数据抓取项目时,会遇到需要先登录网站系统,这时候我们通常会做成由系统自动登录的方式。

分析网页

要完成这项功能,首先需要对项目的网页进行分析,找到关键数据项的ID。如下图中的。
Delphi WebBrowser完成网页自动登录
1、用户名的ID名称;
2、密码对应的ID名称;
3、登录按钮对应的ID名称。

完成自动登录

我们在Delphi中使用WebBrowser控件来显示处理网页,控件怎么使用暂不在本文中讲述。
直接上内容:
Delphi WebBrowser完成网页自动登录
本次项目是在DocumentComplete事件中去处理自动登录的,你也可以自己建一个按钮,通过按钮去登录。
当页面加载完成后,会触发DocumentComplete事件,我们首先使用string(URL).StartsWith 判断是否是登录页面,StartsWith只判断字符串前面部分是否相同,因为有时候URL后面可能会有不同的参数,所以只需要判断前面重要部分就可以。
其次用了CheckBox1.Checked来选择是否需要自动登录,如果需要,则执行自动登录代码
在代码中先创建了一个匿名线程,执行线程内部工作时,DocumentComplete事件代码已执行完成,在线程中,我们先等待400毫秒,用于让浏览器处理完网页页面的其他初始工作。
之后是使用线程同步方式在WebBrowser控件内执行一段JS代码,用JS代码来完成登录工作。
JS代码主要有三条,填写用户名、填写密码、触发登录按钮的点击事件。

主要代码内容

procedure TForm5.WebBrowser1DocumentComplete(ASender: TObject;
  const pDisp: IDispatch; const URL: OleVariant);
const
  //用于自动登录
  JScriptLog = 
    '$(''#username'').val(''%S'');' + #13#10 +  //用于填写用户名
    '$(''#password'').val(''%S'');' + #13#10 +  //用于填写密码
    '$(''#login'').click();';  //触发登录
var
  BDoc: IHTMLDocument2;
  BDoc3: IHTMLDocument3;
  vEFormTime,vEtoTime: IHTMLElement;
begin

  if WebBrowser1.Application = pDisp then
  begin
    BDoc := WebBrowser1.Document as IHTMLDocument2;

    if string(URL).StartsWith('http://XXXX/index.html')
    then //检查URL是否是监控系统的登录页面
    begin
      if CheckBox1.Checked then
      begin
        TThread.CreateAnonymousThread(
          procedure
          begin
            sleep(400);
            TThread.Synchronize(nil,
              procedure
              begin
                BDoc := WebBrowser1.Document as IHTMLDocument2;
                //如果是监控系统的登录页面 完成自动登录
                BDoc.parentWindow.execScript(Format(JScriptLog,
                  [Edit1.Text, Edit4.Text]), 'JavaScript');
              end);
          end).Start;

      end;
    end
    else if string(URL).StartsWith
      ('http://XXXXXX/pages/MainInfo.html') then
    begin
 //处理其他页面的工作时使用
    end;
  end;
end;

其他说明

使用WebBrowser处完成一些指定网页数据提取(或填写)的功能,需要对WebBrowser控件本身的使用比较了解,更重要的是需要针对等处理的网页进行分析,所以必须熟悉HTML、JS(jquery,现在的网站基本会使用到,当然还有一些其他UI框架),还需要了解如何进行网页本地调试与跟踪,某些工作需要在调试中去找内容的。
很多工作会是一些分析与尝试,最后Delphi的实现代码其实会很少的。

其他需要

您可以联系我。


欢迎光顾本人小店:(https://shop63778938.taobao.com/)
小店也提供delphi方面其他技术支持、定制开发。

现在就进店看看

大家有什么不清楚的,可以给我留言讨论
以上信息对您有用的话请点赞收藏,就下面这行

本文地址:https://blog.csdn.net/tanqth/article/details/107897834