[原]用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, // 端口号(默认 ...
随机推荐
- 51nod 计算N!的位数
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1130 对于这类问题:斯特林近似公式: 百度百科的证明:http: ...
- internet协议
internet协议入门 前言 劳于读书,逸于作文. 原文地址:internet协议入门 博主博客地址:Damonare的个人博客 博主之前写过一篇博客:网络协议分析,在这篇博客里通过抓包,具体的分析 ...
- Linux - 升级+编译kernel
For upgrading present kernel to linux-next kernel, we need to follow below steps. 1. Check present k ...
- c#之委托和事件的区别
1.什么是委托,这里就不做介绍了,如果想了解可以查看博客:http://www.cnblogs.com/xiaoxiaogogo/p/3571494.html 下面开始对事件进行介绍 1.定义事件以及 ...
- OC面向对象封装
面向对象语言的三大特性:封装.继承.多态 封装:不暴露自己类的内部的属性,提高自己的数据的安全性:就像一个接线盒一样,内部结构看不到,只有外部的接口提供给我们使用,这样既安全又美观:在代码方面就是结构 ...
- c语言变量作用域问题
c语言中的变量作用域总结 不管什么语言,main好像总是程序的入口,大括号是它的内容:变量的作用域总是困扰着我们,接下来,我们循序渐进的搞明白c语言中的变量作用域,首先得知道c是弱类型的语言,弱类型表 ...
- smarty中的母板极制_extends和block标签
模板继承 继承是从面向对象编程而来的概念,模板继承可以让你定义一个或多个父模板,提供给子模板来进行扩展. 扩展继承意味着子模板可以覆盖部分或全部父模板的块区域. 继承结构可以是多层次的,所以你可以继承 ...
- 剑指offer--面试题17
题目:合并两个排序的单向链表 自己所写代码如下: ListNode* MergeSortedLists(ListNode* pHead1, ListNode* pHead2) { if(pHead1 ...
- Ioc 比较
public interface IC { } public class A { IC ic_; public A(IC ic) { ic_ = ic; } } public class B : IC ...
- [转载]c# OpenFileDialog
string resultFile = ""; OpenFileDialog openFileDialog1 = new OpenFileDialog(); ...