首页 > 编程知识 正文

网络爬虫怎么做(网络爬虫是个什么东西(一))

时间:2023-05-04 04:34:19 阅读:122245 作者:1642

大学最后一个时期认真研究开发的爬虫程序,日子久了别忘了写日记,也方便了其他初级入门者,虽然很辛苦,但也很开心。

网络爬虫一直是热门话题,行业标杆谷歌、百度自不必说,网络爬虫是提供信息源的项目。 当时的我接触到这个东西还很无知,怀疑这些大公司开发的东西是不是我等的hsdlm。 果然在热情的驱使下买了很多书。 读的也是云上,没有得到任何灵感。 最后,在图书馆里,我找了一个归档在角落里的网络机器人java编程指南,给了我很大的启发。

进入正题。 网络爬虫其实是一个机器人程序。 什么是机器人程序,是为了人类反复工作的程序。 例如,你得到了一份无聊的工作。 你老板每天都叫你把隔壁竞争公司网站的主页内容复制并保存在word上。 然后,你打开浏览器,输入旁边公司的网站,进入主页,用鼠标触摸,Ctrl C和Ctttrl有一天你的公司突然变强了,竞争对手的范围上升到了50人。 还是重复前面的过程,CV大法比较熟练,下班前就完成了。 但是,如果今后这是数百人、数千人的竞争对手的话,我的天啊,我会累死的。 我真心渴望程序能摆脱这个无聊的工作,好在是程序猴子,请写程序帮助我做这些工作。

你怎么设计这个程序? 首先,保存50家网站。 在他的网站上循环,访问网站,找到内容并将其存储在本地。 这就是爬虫程序。 名字听起来很贵,其实只有爬虫就是帮你解决这些重复的操作。 所以他写了代码:

主() )

{

url[50] //50的公司地址

LOOP(I50 )//50次循环、for循环、while循环、循环即可。

{

请求URL [ I ];//获取网页

Ctrl C; //复制

Ctrl V; //粘贴

I;

}

}

我的天啊,这也叫代码。 这个程序猴子遇到了问题,怎么得到页面? 怎样才能找到想要的内容并保存? 接下来几百个网站几千个网站,保存这些网站数组,我要再输入一次吗? 问题总是要一个个解决。

首先,我们通过浏览器输入网站得到了我们想要的页面。 浏览器是怎么做的呢? 你有过这样的经历吗? 热望电视剧的更新。 好的19点更新,怎么还没更新? 刷新页面后可以看到最后一次更新了。 因为你不更新就不知道他更新了,所以除非你要求,否则你的页面不会改变。 这不是一个持久的过程,而是一个短暂的过程。 根据您输入、更新网站的操作,浏览器实际上正在向服务端程序请求想要查看的页面。 服务端程序会将你想看的页面返回给浏览器。 这就是实现http通信协议的工具。 接下来找到这个工具并放入我们的程序中。 目前,任何面向对象的开发语言都支持该工具。 不用担心找不到。 最重要的是他能得到网站。 为什么能准确地找到我想看的页面,这个要说网址。 “统一资源定位器”是互联网上标准资源的地址,它简要描述了可从互联网获得的资源的位置和访问方式。 internet上的每个文件都有唯一的URL,其中包含指示文件位置的信息。 “这是网址。 (

一个例子是: (http://127.0.0.1:8080/index.html ),http表示在http上传输协议,而127.0.0.1访问目标机器

以后怎么能知道我想要的内容并保存? 首先,什么是网页,包括文字、照片、视频、音乐、程序……大集合。 这样复杂的聚会总是有一定的组织形式。 不

然管理起来不是很累么,这就是htm超文本语言,其实就是一堆标签包含我们想要的内容(文字,图片,视频,音乐,程序...)打开浏览器输入一个网址,按F12你会看到类似如下图片,左侧是是页面,右侧就是html格式的页面,右侧看起来好闹心,但是没什么关系,我们只是想找几个我们关心的标签(标签就是<div> </div>像这种形式的结构), 你也可以找个写网页的工具像DreamWeaver,写个网页~~

            F12后的页面如下:


     

     你输入网址请求的页面,其实是以html格式返回给你,也就是先给你右侧这一坨东西,再转化成左侧比较和谐的东西,你的浏览器可以解析出这个格式,并将其对应内容,放到页面对应位置上,查看这个右侧文字与左侧文字对应,如上图我们只要解析<p> </p>这个标签就能获取我们想要的文本,同样html解析工具也是随处可见,关注你感兴趣的含文本的标签,在获取到文本后保存成文件即可。

     还不错,还剩下最后一个问题看着问题不大,但是却是最关键的。老板给你多少网址你就写多少网址。但是现实是老板连网都不会上,怎么能给你网址,所以真实情况下给你任务是找出与我们相关的网址并获取文本发给我,好的大王,是的大王,不过没有了网址我怎么能获取我想要的网页呢?

     我们在浏览页面的时候会点击某个页面上标题或按钮,会自动跳转到下一个页面。

例如下图:(页面展示是个电影分类文字标题)


        


        这里有个标签带了个属性href = “....",  看着格式就知道是个网址,所以跳转(超链接)其实就是通过这个新的url向服务端做了个请求,然后将一个新的页面展示给你。这和你在浏览器上输入网址然后按回车是一个道理,只不过这次是点击(啰嗦)。所以我们大胆想象下网络上的所有网页都是这样关联在一起的,比如自己写个网站如果想让其他人快速知道,一般会放到点击量高的网址,通过这个网站再进入到我的网站,然后浏览我的网页内容,当然我的网页内容同样也包含别人网站的连接,只要找个网页解析出url就能,再发送请求就能找到下一个网页,以此类推。至于实现其实很简单,使用html解析解析工具,这回是我们感兴趣的第二个标签<a href = "url" >,将解析出来的url存到数组中,大工告成。

         重新再来写一下:

         void main()

        {

                  Vector <string> urlArray;                 //这里用了容器Vector,就是个无限长度的数组,为了方便你不用再写数组长度了(但实际上并不适合,下回分解),还是存放网址                                                         (URL), 启动前要至少添加一个url

                  while (urlArray.count != 0)              //判断存的url数组里不能为空,为空则结束循环。

                  {

                            string htmlPage = Request(urlArray[0]);            //请求获取网页文件, index.html, xxx.html,获取形式是字符串。

                            string text = ParseHtmlText(htmlPage);             //解析htmlPage,并获取文本,

                            string url =  ParseHtmlUrl(htmlPage);                //解析htmlPage,并获取url,这里其实是一堆url,主页里会有很多url解析出来,这里为了清晰就写一个吧。

                            saveFile(text);                                                        //保存刚才获取到text到本地文件

                            urlArray.add(url);                                                   //添加url到urlArray 保存url,作为下次使用的url

                            urlArray.remove(0);                              //移除这次使用过的url也就是第一个urlArray[0]

                   }

        }

   

     最后广度搜索方式网络爬虫写完了。当然你会吐槽,但是槽点太多无从下口。请原谅我的懒惰,这个就是百分之百网络爬虫。首先解释下流程,循环开始检查下url列表中是否是空的,不是则获取首个url,通过url请求获得htmlPage页面,然后进行解析网页获取text 和 url两个内容,然后将text文本保存,将url加入url列表作为待访问的点。这个过程就是通过url获取页面,通过页面获取url,就这样回到了哲学问题上,鸡生蛋,蛋生鸡



    是先有鸡,还是先有蛋呢,不管先有谁,我们都必须要让这个循环进行下去,让鸡下蛋,让蛋生鸡,子子孙孙无穷匮也。所以我们先给个蛋(url), 让世界的齿轮开始转动。爬虫原理就是这么简单,你用任何一款面向对象语言(C++, java, c#, python, go, php)都能实现它。虽然写完了,但是事情还远没有结束,我们程序猿在写完了这个程序后会碰到了各种各样的问题,网络是个危险地方,我们还是会火星吧。这个粗枝大叶的程序能在今天的网络活上半小时已经是奇迹了。这也就是为什么有各式各样爬虫程序,格式各样的开发组件工具层出不穷,为的就是将循环进行到底。但首先搞明白爬虫是什么东西才能更灵活设计出自己的爬虫,至于程序猿能不能完成任务,且听下回分解。

(本故事纯属虚构,如有雷同真是巧合)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。