离石张子玉:简单有效的防网络爬虫技巧?

来源:百度文库 编辑:偶看新闻 时间:2024/05/04 17:56:41
简单有效的防网络爬虫技巧?         女友在51job上找工作,虽然51job已经有工作地点分类,却只分类到城市,但是因为家住浦东,所以,她希望只找在浦东的公司发布的职位,于是向我求救,希望我能帮她把查找结果中公司地点不在浦东的职位信息过滤掉。我一看要求,加上前不久刚写了blogbench——一个基于webbrowser控件的blog发布程序,觉得应该没什么太大的挑战吧~~

       您应该也预料到了,实践的结果总会出人意料的,最后不得不佩服51job设计人员不知是有否有意为之的页面设计风格——每个网页中有两个标签对,往往第一个出现在真正的body内容被现示之前

51job除了首页之外的网页,标签结构一般是这样的:



...





真正的显示内容



这个结构在被mshtml.HTMLDocument解析后,被存入变量的只会包含以下内容:



...



其余内容被忽略,但是,浏览器还是会显示其余内容的~~ 也因此,我用WebBrowser控件浏览其页面,却无论如何也跟踪不到它真正的现示内容

试着在google和baidu搜索,"职位,51job,程序员",果然没有任何有效查询!

哎,糟蹋了自己在mm心中的“高手”形象,换得这一点点编程技巧,在此与大家共享,寥解心中闷气~~ posted on 2005-02-01 11:45 Teddy‘s Knowledge Base 阅读(2330) 评论(13)  编辑 收藏 收藏至365Key

Feedback

# re: 简单有效的防网络爬虫技巧? 2005-02-01 12:21 一切由.NET开始 Google 若是依靠 WebBrowser 控件,只怕要吐血了
  
# re: 简单有效的防网络爬虫技巧? 2005-02-01 12:28 Teddy‘s Knowledge Base 朋友,我没有说google用webbrowser控件,但是,要深入分析网页肯定要解析网页源码的,通过这类不规则的标签方式来可以糊弄很多解析器了~
  
# re: 简单有效的防网络爬虫技巧? 2005-02-01 12:45 老翅寒暑 你可以跳过第一个html对,截取以后的内容重新解释一下就可以了
或者干脆下载内容之后,把第一个和最后一个之间的所有html修改掉即可
  
# re: 简单有效的防网络爬虫技巧? 2005-02-01 12:53 Teddy‘s Knowledge Base 正在尝试与“老翅寒暑”所说类似的方法,这样做唯一的不足是会丢失网站的cookie和session,但估计也只能先做到这样了~~
  
# re: 简单有效的防网络爬虫技巧? 2005-02-01 13:01 Teddy‘s Knowledge Base 原先之所以像基于webbrowser还有一个原因是,这样可以对用户操作完全透明,只在显示某页时,对显示结果进行附加操作,现在恐怕女友上手就有点“难”了,她一定会强调问我为什么非要和51job原来的操作方式不一样(特殊的解析过程),以及为什么我每次申请职位都提示我要输入用户名密码(就告诉她session丢失了——笑)~~
  
# re: 简单有效的防网络爬虫技巧? 2005-02-01 13:44 Ariel Y. 这样,就不是标准的页面了,不应该推荐的说:(
  
# re: 简单有效的防网络爬虫技巧? 2005-02-01 14:36 ocean 用webbrowser多麻烦,用webclient就可以了,得到页面之后采用正则表达式来解析,很快就可以得到结果。
  
# re: 简单有效的防网络爬虫技巧? 2005-02-01 15:09 spidertan 支持ocean的说
  
# re: 简单有效的防网络爬虫技巧? 2005-02-01 15:53 Teddy‘s Knowledge Base 用ocean说的方法,webclient来Post数据,还好,网站不检查来源url,成功~~ 呵呵~~!
  
# re: 简单有效的防网络爬虫技巧? 2005-02-04 15:41 QuitGame heihei Ocean 是大师哦,
  
# re: 简单有效的防网络爬虫技巧? 2005-02-14 05:33 SONIC3D 去试试Clever Internet Suite,我前一阵用它做过一个牵涉html解析的工具,是对html stream直接作解析,不用WebBrowser的,我觉得不错,而且外面有VCL的源码版本,你可以去找找看,它的HTML Parse模块虽然写得一般,但基本功能都有了,按你的匹配几个网页中关键字的要求,它是没问题的
  
# re: 简单有效的防网络爬虫技巧? 2005-04-09 14:07 baogong 我以前写过相关的程序,都是手动指定开始和结束位置来进行操作的。
通过正则进行数据的匹配。

如果不做任何设置直接检索的话估计要好好研究过滤了。

主要是网页设计一般都不是很规范,大家的写作方式都是不一样的。