[原]用WebBrowser组件模拟人工运行搜索引擎自动点击搜索结果的实验
本代码只是业余时间无聊写着试试,用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组件模拟人工运行搜索引擎自动点击搜索结果的实验的更多相关文章
- python 使用selenium模块实现自动搜索百度百科词条(模拟人工搜索)
目标:模拟人工搜索百度百科词条,爬取相关信息,自动删除上一个关键词,输入新关键词,继续搜索,直到循环结束. 代码: from selenium import webdriver from seleni ...
- python 使用selenium模块爬取同一个url下不同页的内容(浏览器模拟人工翻页)
页面翻页,下一页可能是一个新的url 也有可能是用js进行页面跳转,url不变,解决方法是实现浏览器模拟人工翻页 目标:爬取同一个url下不同页的数据(上述第二种情况) url:http://www. ...
- Delphi for iOS开发指南(7):在iOS应用程序中使用WebBrowser组件
Delphi for iOS开发指南(7):在iOS应用程序中使用WebBrowser组件 在FireMonkey iOS应用程序中使用WebBrowser 在iOS平台上,FireMonkey使用T ...
- mybatis JdbcTypeInterceptor - 运行时自动添加 jdbcType 属性
上代码: package tk.mybatis.plugin; import org.apache.ibatis.executor.ErrorContext; import org.apache.ib ...
- 教你用Elastic Search:运行第一条Hello World搜索命令
摘要:Elastic Search可实时对数据库进行全文检索.处理同义词.从同样的数据中生成分析和聚合数据. 本文分享自华为云社区<Elastic Search入门(一): 简介,安装,运行第一 ...
- (转载)让XCode运行时自动更新资源
转自http://goldlion.blog.51cto.com/4127613/1351616 用过XCode的人都知道,XCode有一个臭名昭著的bug——除非你修改了源代码造成了重新编译,否则游 ...
- c#控制IE浏览器自动点击等事件WebBrowser,mshtml.IHTMLDocument2 .
// c#控制IE浏览器自动点击等事件WebBrowser,mshtml.IHTMLDocument2 分类: c# 2013-02-06 15:18 3008人阅读 评论(0) 收藏 举报 可以实现 ...
- form WebBrowser自动点击弹出提示框alert、弹出对话框confirm、屏蔽弹出框、屏蔽弹出脚本错误的解决办法
针对WebBrowser控件中自动点击弹出框及禁用脚本提示问题得到如下几种实际情况的解决办法,绝对管用. 1.屏蔽弹出错误脚本 将WebBrowser控件ScriptErrorsSuppressed设 ...
- vue中npm run dev运行项目自动打开浏览器
npm run dev运行项目自动打开浏览器设置自动打开浏览器 // 各种设备设置信息 host: 'localhost', //主机名 port: 8080, // 端口号(默认 ...
随机推荐
- .net 科学类型相关问题
Q:如果我要把使用科学记数法表示的string转换为int又该如何呢? A:你可以通过把NumberStyles.AllowDecimalPoint | NumberStyles.AllowExpon ...
- Careercup - Facebook面试题 - 5761467236220928
2014-05-02 07:06 题目链接 原题: Given an array of randomly sorted integers and an integer k, write a funct ...
- aes 解密出现 java.lang.NumberFormatException: Invalid int: "ch"
原因: 将加密/解密的seed 和 加密内容顺序放反. decrypt(String seed, String encrypted) 附上AES解密/加密代码(android开发): package ...
- [转载]C# 多线程、控制线程数提高循环输出效率
C#多线程及控制线程数量,对for循环输出效率. 虽然输出不规律,但是效率明显提高. 思路: 如果要删除1000条数据,只使用for循环,则一个接着一个输出.所以,把1000条数据分成seed段,每段 ...
- C# WinForm开发系列 - ZedGraph
ZedGraph是用于创建任意数据的二维线型.条型.饼型图表的一个类库,也可以作为Windows窗体用户控件和Asp.Net网页控件.这个类库具有高度的适应性,几乎所有式样的图表都能够被创建.这个类库 ...
- texCUBE() to CubemapSampler.Sample()
update dx9 to dx11 refers to CUBEMAP sampler texCUBE(CubeMpaSampler,normal) maybe change to Cubema ...
- QC缺陷管理操作-细说(转)
一.缺陷常用字段说明 二.缺陷管理流程图 三.开发人员修改缺陷填写规范 四.项目经理决定延期修改缺陷 一.缺陷常用字段说明 1.摘要 对缺陷的简单描述.摘要包括该缺陷所属的模块名称-子模块名称,以及简 ...
- _beginthreadex创建多线程详解
一.需要的头文件支持 #include <process.h> // for _beginthread() 需要的设置:ProjectSetting-->C/C++- ...
- Gitlab安装和使用相关信息
Gitlab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目.它拥有与Github类似的功能,能够浏览源代码,管理 ...
- (二)、SSL证书
从第一部分HTTPS原理中,我们可以了解到HTTPS核心的一个部分是数据传输之前的握手,握手过程中确定了数据加密的密码.在握手过程中,网站会向浏览器发送SSL证书,SSL证书和我们日常用的身份证类似, ...