本代码只是业余时间无聊写着试试,用WebBrowser组件模拟人工运行搜索引擎自动点击搜索结果的实验

这是网络中盛传的提高搜索引擎点击率的一种方式,当然属于作弊,不推荐各位使用。另外这种方式的性能不佳,往往因为网络及本地机器的原因中途当机。当然如果只是写这游戏一下那是无妨。这里只是提供了其中的一种原理,方法还有很多。如果此方式继续优化详细写下去的话可能需要涉及到vpn定时更改ip地址到问题,当然现在即便是vpn也有办法逆向找到原始的ip地址。

代码示例如下:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Web;
using System.Threading; namespace WinApp_huashanlin
{
    public partial class FormHits : Form
    {
        public FormHits()
        {
            InitializeComponent();
            webBrowser_huashanlin.Navigate("http://www.baidu.com",false);
        }         private void button2_Click(object sender, EventArgs e)
        {
            //设置要搜索的关键词
            string huashanlin_keys = "C#";             //选取百度搜索作为实验例子,将webBrowser导航到百度搜索主页
            webBrowser_huashanlin.Navigate("http://www.baidu.com", false);             //模拟人工查看或输入关键词等行为需要的3秒
            Thread.Sleep(3000);
            
            //找到页面中输入关键字的input标签
            HtmlElement key0s = webBrowser_huashanlin.Document.All["kw"];             //为input标签输入value值
            key0s.SetAttribute("value", huashanlin_keys);
            
            //找到页面中button或者submit按钮
            HtmlElement hit = webBrowser_huashanlin.Document.All["su"];             //触发搜索按钮的click事件
            hit.InvokeMember("click");             //模拟人查看搜索结果需要3秒时间
            Thread.Sleep(9000);             //设置需要在搜索结果中查找到的url地址
            string url = "http://baike.baidu.com/view/6590.htm";             //对需要查找的url进行编码
            string encodurl = System.Web.HttpUtility.UrlDecode(url, System.Text.Encoding.Unicode);             bool isget = false;             //匹配页面中所有标签为A超链接的href属性,如果匹配到则触发该超链接的click事件
            for (int i = 0; i < webBrowser_huashanlin.Document.All.Count; i++)
            {
                if (webBrowser_huashanlin.Document.All[i].TagName.ToString().Trim() == "A")
                {
                    string tmpeurl = webBrowser_huashanlin.Document.All[i].GetAttribute("href").ToString();
                    tmpeurl = System.Web.HttpUtility.UrlDecode(tmpeurl, System.Text.Encoding.Unicode);
                    if (tmpeurl == encodurl)
                    {
                        isget = true;
                        //webBrowserhuashanlin.Document.All[i].SetAttribute("target", "_self");//在同一个webBrowserhuashanlin浏览器组件中打开页面,便于后续操作。
                        webBrowser_huashanlin.Document.All[i].InvokeMember("click");//自动点击你所设置的页面
                        break;
                    }
                }
            }             if (!isget)
            {
                //如果百度搜索结果的第一页中没有找到设置的url,则寻找到该页面中“下一页”的超链接并触发click事件,
                //在下一个十条搜索结果中重复以上的步骤继续搜索匹配,这里可以把该代码整理整理成为一个递归函数循环的调用,直到找到目标位置。
                //每个操作之间设置一个等待时间模拟人工等待的时间,同时也是为可能的网络状况留一个缓冲的余地
                //以上对设置的url只是进行简单的匹配,实际使用情况下需要进一步需要编写匹配方法,诸如正则验证等等
            }
        }     }
}

[原]用WebBrowser组件模拟人工运行搜索引擎自动点击搜索结果的实验的更多相关文章

  1. python 使用selenium模块实现自动搜索百度百科词条(模拟人工搜索)

    目标:模拟人工搜索百度百科词条,爬取相关信息,自动删除上一个关键词,输入新关键词,继续搜索,直到循环结束. 代码: from selenium import webdriver from seleni ...

  2. python 使用selenium模块爬取同一个url下不同页的内容(浏览器模拟人工翻页)

    页面翻页,下一页可能是一个新的url 也有可能是用js进行页面跳转,url不变,解决方法是实现浏览器模拟人工翻页 目标:爬取同一个url下不同页的数据(上述第二种情况) url:http://www. ...

  3. Delphi for iOS开发指南(7):在iOS应用程序中使用WebBrowser组件

    Delphi for iOS开发指南(7):在iOS应用程序中使用WebBrowser组件 在FireMonkey iOS应用程序中使用WebBrowser 在iOS平台上,FireMonkey使用T ...

  4. mybatis JdbcTypeInterceptor - 运行时自动添加 jdbcType 属性

    上代码: package tk.mybatis.plugin; import org.apache.ibatis.executor.ErrorContext; import org.apache.ib ...

  5. 教你用Elastic Search:运行第一条Hello World搜索命令

    摘要:Elastic Search可实时对数据库进行全文检索.处理同义词.从同样的数据中生成分析和聚合数据. 本文分享自华为云社区<Elastic Search入门(一): 简介,安装,运行第一 ...

  6. (转载)让XCode运行时自动更新资源

    转自http://goldlion.blog.51cto.com/4127613/1351616 用过XCode的人都知道,XCode有一个臭名昭著的bug——除非你修改了源代码造成了重新编译,否则游 ...

  7. c#控制IE浏览器自动点击等事件WebBrowser,mshtml.IHTMLDocument2 .

    // c#控制IE浏览器自动点击等事件WebBrowser,mshtml.IHTMLDocument2 分类: c# 2013-02-06 15:18 3008人阅读 评论(0) 收藏 举报 可以实现 ...

  8. form WebBrowser自动点击弹出提示框alert、弹出对话框confirm、屏蔽弹出框、屏蔽弹出脚本错误的解决办法

    针对WebBrowser控件中自动点击弹出框及禁用脚本提示问题得到如下几种实际情况的解决办法,绝对管用. 1.屏蔽弹出错误脚本 将WebBrowser控件ScriptErrorsSuppressed设 ...

  9. vue中npm run dev运行项目自动打开浏览器

    npm run dev运行项目自动打开浏览器设置自动打开浏览器 // 各种设备设置信息      host: 'localhost', //主机名      port: 8080, // 端口号(默认 ...

随机推荐

  1. ASP.NET MVC +EasyUI 权限设计(二)环境搭建

    请注明转载地址:http://www.cnblogs.com/arhat 今天突然发现博客园出问题了,老魏使用了PC,手机,平板都访问博客园了,都是不能正常的访问,原因是不能加载CSS,也就是不能访问 ...

  2. NodeJS学习笔记(转载)

    前言 让nodeJS跑起来 文件结构 node_modules/ejs app.js 路由 路由规则 添加路由规则 注册功能 MongoDB 安装MongoDB 链接MongoDB 结语 前言 最近同 ...

  3. 关于6410的sd卡和nandflash启动的区别

    今天在公司我们队长问我个问题,关于cortex的sd启动流程和nandflash的启动流程,一下想不起来了,中午闲来无事就整理了整理当初6410的两种启动方式的区别.在这里写一下.有不对的请指点,我对 ...

  4. FTP操作类(支持异步)

    public delegate void DownloadProgressChangedEventHandle(string information, long currentprogress, lo ...

  5. C# 数据结构--排序[上]

    概述 看了几天的排序内容,现在和大家分享一些常见的排序方法. 啥是排序? 个人理解的排序:通过对数组中的值进行对比,交换位置最终得到一个有序的数组.排序分为内存排序和外部排序.本次分享排序方法都为内存 ...

  6. 【转】最短路&差分约束题集

    转自:http://blog.csdn.net/shahdza/article/details/7779273 最短路 [HDU] 1548 A strange lift基础最短路(或bfs)★254 ...

  7. watch your tone

    老板要求邮件注意语气... 木想到混了这么久这种事情还要老板提醒

  8. windows server 2008 R2 远程连接用户数修改

    设置windows server 2008 R2 远程连接用户数修改,三步搞定 1.运行(win+R)中输入tsconfig.msc 2.双击“限制每个用户只能进行一个会话”,取消这个选项负选框 3. ...

  9. [转]CentOS 5.5下FTP安装及配置

    一.FTP的安装 1.检测是否安装了FTP : [root@localhost ~]# rpm -q vsftpd vsftpd-2.0.5-16.el5_5.1 否则显示:[root@localho ...

  10. uva 11181

    直接枚举计算就行: #include<cstdio> #include<cstring> #include<algorithm> #define maxn 22 u ...