java抓取网页数据( #Python很强大,熟练的程序员可以在5分钟内写出一个有价值的爬虫)

优采云 发布时间: 2021-09-19 05:08

  java抓取网页数据(

#Python很强大,熟练的程序员可以在5分钟内写出一个有价值的爬虫)

  

  ####

  Python非常强大。熟练的程序员可以在5分钟内编写一个有价值的爬虫程序,例如:-抓取股票信息-抓取笑话-抓取商品信息

  但大多数被抓到的网站都不是你能抓到的木鸡。如果你抓住他们,就会有阻力

  这是网站和程序员之间的游戏!所有的程序员,为什么?程序员为什么要打扰程序员

  任何游戏都不容易!因为道有一英尺高,魔鬼有一英尺高

  如果你抓住他,你就能阻止他。如果你改进抓取方法,他可以改进反抓取方法

  如果你抓住了网站程序员,你不会侮辱他们吗

  如果有人问你:某某网站你能抓住它吗

  答案一定是肯定的

  从技术角度来看,只要你能看到网页上的内容,你就能抓住它!这只是抓住的困难

  本文总结了爬虫实现中常见的8个难点和基本解决方案

  1.意外爬进监狱

  就技术手段而言,没有什么是k17无法掌握的@

  从法律的角度来看,有一句谚语:爬行动物在监狱里写得好,吃得早!我还有一个好朋友在那里。说到这里,我的眼里充满了泪水

  俗话说,有规则,爬行动物有规则!错误规则是robots.txt

  Robots.txt是写入爬虫程序的网站语句,表示无法对内容进行爬虫。Robots.txt通常位于网站的根目录中@

  以桩号B为例,直接在浏览器中输入:

  您可以看到以下内容:

  它清楚地表明,不能捕获以“/include/”、“/mylist/”等开头的URL

  如果你说你抓不到,就别抓,否则警察会抓你的

  但中国的许多网站不遵守规则,不谈论军事道德,网站根本没有robots.txt。那又怎样

  我们可以看到几个方面:-是敏感信息吗?如果它涉及私人敏感信息,不要抓住它-你抓了多少?一般来说,如果数量少就可以了。数量大时要小心。例如:偷10元不会坐牢,但偷10万元绝对可以逍遥法外

  如果你只需要抓取自己的物品、电子邮件、账单等,通常没有问题

  如果您不确定是否可以抓取,也可以直接联系网站所有者询问是否可以抓取或是否有数据接口

  2.复杂多变的网页结构

  网页的复杂性体现在两个方面:1.同一个网页在显示不同内容时会有不同的结构

  例如,对不同的商品使用不同的网页模板是正常的

  另一个例子是商品列表页面。没有商品,一种商品和多种商品。风格可能不同

  如果您的爬虫程序只能处理一种情况,那么在爬虫过程中将出现问题

  网页功能或设计风格的变化

  一般爬虫使用XPath根据网页结构解析内容。一旦结构发生变化,他们就无法解析它

  如何解决

  无论网页结构如何变化,都可以完成一组代码。常规书写更好,准确性也很高

  3.IP阻塞

  IP阻塞是一种常见的反爬网方法

  当网站一个IP地址发送太多请求时,它将临时或永久阻止IP请求

  技术好,规则是网站一般提前设定的。例如,您一天只能访问500次,或者一分钟不能访问超过10次

  超过次数后,您将被自动锁定并解锁

  @技术差的网站可能没有这样的规则,网站挂断,或者管理员在查看日志后发现您的请求太多

  因为他们没有现成的规则和技术手段,他们可能简单而粗糙,直接在web服务器上设置IP地址的永久阻塞

  处理IP阻塞的一般措施:-不要频繁抓取,并在两个请求之间设置一定的随机间隔-摸索网站规则,然后根据规则抓取-使用IP代理服务不断更改IP地址。不要害怕与收费的IP代理一起花钱。如果你不想花钱,找一个免费的。在互联网上搜索。有很多免费的,但它们可能不稳定

  4.图片验证码

  图像验证码是另一种最常用的防爬技术

  当您登录到网站或检测到您的请求太多时,网站会弹出一张图片,要求您在图片上输入内容

  图片上的内容通常是扭曲的文本,甚至是数学公式,允许您输入计算结果

  这很容易做到。通常,OCR技术,如Python的tesserocr库,可以自动识别图片上的内容,然后自动填充并继续爬行

  然而,这条路比魔鬼高一英尺,图片验证码也在不断进化和升级,比如国外的谷歌验证码,这常常让我难以哭泣:

  或12306:

  简单的OCR技术很难处理此类图片,但总有办法:-人工智能技术之所以被称为人工智能,是因为它可以与人一样,甚至比人更聪明。来自北京大学、英国兰卡大学和美国西北大学的几位研究人员声称,他们研究了一种非常快速的方法,利用人工智能破解验证码——使用专业解码服务。有需求就有产品,专业的东西留给专业的人。一些公司提供相关服务。您可以调用他们的API或使用他们的插件来解决验证代码的问题

  -人肉解码:当爬虫运行到验证码时,暂停,等待手动输入验证码,然后继续

  5.蜜罐陷阱

  蜜罐陷阱是网站开发者用来快速识别爬行动物的一个技巧

  在网站上添加一些链接,并通过CSS使*敏*感*词*类看不到这些链接:

  display: none

  当爬虫解析HTML时,它可以找到这些链接,因此它单击链接并爬入

  一旦你爬进去,立即封锁你的IP

  解决方案也很简单。在解析网页时,添加一些逻辑来判断它是否可见

  6.网页加载缓慢

  一些网站报告说速度非常慢。当请求量很大时,它会不时失败

  这可能对人们有好处。耐心等待,刷新页面

  爬虫程序还应添加相应的逻辑:-设置合理的超时时间。太短的网页在加载之前会失败。如果它们太长,爬行将非常缓慢和低效-添加一个自动重试机制。但是,重试次数不应超过5次。如果你不能做三到五次,那么再试一次通常是没有用的。下次你可以再试一次

  7.Ajax动态内容

  许多网站使用ajax动态加载某些内容。换句话说,main请求只返回web页面的主要内容,其他内容通过Ajax请求动态获取

  以站点B为例,视频详细信息页面的HTML页面仅收录后续Ajax请求获得的视频基本信息、评论等

  当我们使用爬虫进行爬网时,我们只能第一次获得HTML,并且无法获得以下内容

  特别是近几年,前端和后端分离非常流行,所有数据都是通过Ajax获取的。HTML页面只是一个没有数据的空架子

  通常有两种解决方案:

  -分析浏览器的web请求,找出后续请求是什么,然后使用爬虫启动相同的后续请求

  -使用浏览器驱动的技术,如selenium。因为它们是通过用程序打开浏览器来访问的,所以后续的Ajax请求也可用

  第一种方法是技术活动,但一旦分析,抓取速度会更快

  8.登录请求

  某些内容只有在登录后才能访问。在这种情况下,请看一下本文的第1点,以防止爬进监狱

  但如果是你自己的账户,一般来说没问题

  解决方案:

  -如果您只是临时获取一些网站内容,您可以手动登录,分析浏览器的cookie,然后将相同的cookie添加到爬虫请求中

  -对于简单登录网站,您还可以在脚本中自动填写用户名和密码,无需手动干预

  -或者,当需要输入密码时,让爬虫暂停并在手动输入密码后继续爬虫

  9.质量抓斗

  一个专业的爬虫不会满足于简单的爬行。它的名字有爬行这个词。它将抓取网页上的链接,并自动抓取链接中的内容。如果它继续下去,整个世界都将是这样

  这带来了很多问题。举几个例子:-需要爬网的网页数量巨大-爬网者可能会沿着链接爬回他们的主页-许多网页设置了重定向-爬网他们不需要的大量内容-爬网回大量数据

  当你面对这些问题时,爬行动物的问题就变成了“爬行动物+工程”的问题

  简单的解决方案是使用爬虫框架,比如Python中的scrapy,它将帮助您记录捕获的内容和未捕获的内容,

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线