新互联教育()提醒您网络爬虫(Webcrawler)

优采云 发布时间: 2021-07-20 19:12

  新互联教育()提醒您网络爬虫(Webcrawler)

  新互联网教育()提醒你。网络爬虫是根据一定的规则自动抓取万维网信息的程序或脚本。它们被广泛用于互联网搜索引擎或其他类似的网站,可以自动访问采集以获取或更新这些网站的内容和检索方法。从功能上来说,爬虫一般分为三部分:数据采集、处理、存储。传统爬虫从一个或多个初始网页的网址开始,获取初始网页上的网址,在网页抓取过程中不断从当前网页中提取新的网址放入队列中,直到某个停止条件系统满足。聚焦爬虫的工作流程比较复杂。需要按照一定的网页分析算法过滤与主题无关的链接,保留有用的链接,放入URL队列等待被抓取。然后,它会根据一定的搜索策略从队列中选择下一个要抓取的网页的网址,并重复上述过程,直到达到系统的某个条件时停止。另外,爬虫爬过的所有网页都会被系统存储起来,进行一定的分析、过滤、索引,以备以后查询检索;对于专注的爬虫,本过程中得到的分析结果还是有可能对后续的爬虫过程给予反馈和指导的。

  

  爬取原理

  网络爬虫系统的作用是下载网页数据,为搜索引擎系统提供数据源。许多大型互联网搜索引擎系统都被称为基于Web数据采集的搜索引擎系统,例如Google和百度。这说明了网络爬虫系统在搜索引擎中的重要性。除了供用户阅读的文本信息外,网页还收录一些超链接信息。网络爬虫系统通过网页中的超链接信息不断获取网络上的其他网页。正是因为这个采集进程就像一个爬虫或蜘蛛在网络上漫游,所以被称为网络爬虫系统或网络蜘蛛系统,英文称为Spider或Crawler。

  

  基本爬虫流程

  发起请求:通过HTTP库向目标站点发起请求,即发送一个Request,可以收录额外的headers等信息,等待服务器响应。获取响应内容:如果服务器可以正常响应,就会得到一个Response。响应的内容就是要获取的页面的内容。类型可以是HTML、Json字符串、二进制数据(如图片和视频)等类型。解析内容:获取的内容可能是HTML,可以使用正则表达式和网页解析库进行解析。可能是Json,可以直接转成Json对象解析,也可能是二进制数据,可以保存或者进一步处理。保存数据:有多种保存形式,可以保存为文本,保存到数据库,或保存为特定格式。

  请求和响应

  Request:浏览器向URL所在的服务器发送消息。此过程称为 HTTP 请求。

  响应:服务器收到浏览器发送的消息后,可以根据浏览器发送的消息内容对消息进行处理,然后将消息发送回浏览器。这个过程称为 HTTP 响应。浏览器收到服务器的Response信息后,对信息进行相应的处理,然后显示出来。

  要求详细解释

  请求方式:主要有GET和POST两种,另外还有HEAD、PUT、DELETE、OPTIONS等

  请求 URL:URL 的全称是 Uniform Resource Locator。例如,一个网页文档、一张图片、一段视频等都可以通过URL唯一确定。

  请求头:收录请求的头信息,如User-Agent、Host、Cookies等信息。

  请求体:请求中携带的附加数据,例如提交表单时的表单数据。

  回复详细说明

  响应状态:有多种响应状态,如200表示成功,301表示跳转,404表示找不到页面,502表示服务器错误。

  响应头:如内容类型、内容长度、服务器信息、设置cookies等

  响应体:最重要的部分,包括请求资源的内容,如网页HTML、图片二进制数据等

  可以捕获哪些数据

  网页文本:如HTML文档、Json格式文本等

  图片:获取的二进制文件保存为图片格式。

  Video:同样是二进制文件,保存为视频格式即可。

  依此类推:只要能请求,就能获得。

  分析方法

  直接处理Json解析正则表达式BeautifulSoup PyQuery XPath

  抓取问题

  问:为什么我抓到的和浏览器看到的不一样?

  答案:网页由浏览器解析渲染,加载CSS和JS等文件,让我们看到漂亮的网页,抓到的文件只是一些代码,CSS文件不能被调用,使样式变得不可能。如果显示出来,那么就会出现网页错位等问题。

  Q:如何解决Java渲染的问题?

  答案:分析Ajax请求、Selenium/WebDriver、Splash、PyV8、Ghost.py等库

  保存数据

  Text:纯文本、Json、Xml 等

  关系型数据库:如 MySQL、Oracle、SQL Server 等,都有结构化的表结构进行存储。

  非关系型数据库:如MongoDB、Redis等Key-Value存储。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线