网页抓取解密(Python爬虫如何写爬虫“贼船”等上了贼船才发现)

优采云 发布时间: 2022-04-12 20:32

  网页抓取解密(Python爬虫如何写爬虫“贼船”等上了贼船才发现)

  写爬虫是一项考验综合实力的工作。有时,您可以轻松获取所需的数据;有时候,你努力了,却一无所获。

  很多Python爬虫入门教程都是用一行代码把你骗进“海盗船”,等你上了贼船才发现水这么深~比如爬一个网页就可以了一个非常简单的代码行:

  r = requests.get('http://news.baidu.com')

  很简单,但它的作用只是爬取一个网页,而一个有用的爬虫远不止是爬取一个网页。

  一个有用的爬虫,只用两个词衡量:

  但是要实现这两个字,还需要下一番功夫。自己努力是一方面,但同样很重要的一点是你想要达到的网站的目标是它给你带来了多少问题。综合来看,写爬虫有多难。

  网络爬虫难点一:只爬 HTML 页面但可扩展

  这里我们以新闻爬虫为例。大家都用过百度的新闻搜索,我就用它的爬虫说说实现的难点。

  新闻网站基本不设防,新闻内容全部在网页的html代码中,抓取整个网页基本上就是一行。听起来很简单,但对于一个搜索引擎级别的爬虫来说,就不是那么简单了,要及时爬取上万条新闻网站的新闻也不是一件容易的事。

  我们先来看一下新闻爬虫的简单流程图:

  从一些*敏*感*词*页开始,*敏*感*词*页往往是一些新闻网站的首页,爬虫抓取该页面,从中提取出网站的URL,放入URL池中进行爬取。这从几页开始,然后继续扩展到其他页面。爬虫爬取的网页越来越多,提取的新网址也会成倍增加。

  如何在最短的时间内抓取更多的网址?

  这是难点之一,不是目的URL带来的,而是对我们自身意愿的考验:

  如何及时掌握最新消息?

  这是效率之外的另一个难点。如何保证时效?上千条新闻网站时刻都在发布最新消息。爬虫如何在织网抓取“旧”新闻的同时兼顾“新”新闻的获取?

  如何存储大量捕获的新闻?

  爬虫的抓取会翻出几年前和几十年前的每一个新闻页面网站,从而获取大量需要存储的页面。就是存储的难点。

  如何清理提取的网页内容?

  快速准确地从新闻网页的html中提取想要的信息数据,如标题、发布时间、正文内容等,给内容提取带来困难。

  网络爬虫难点二:需要登录才能抓取想要的数据

  人们很贪婪,想要无穷无尽的数据,但是很多数据并不容易提供给你。有一大类数据,只有账号登录才能看到。也就是说,爬虫在请求的时候必须登录才能抓取数据。

  如何获取登录状态?

  老猿已经说了,http协议的性质决定了登录状态是一些cookies,所以如何获取登录状态是一个很棘手的问题。有的网站登录过程很简单,将账号和密码发送到服务器,服务器验证后返回cookies表示登录。这样的网站,更容易实现自动登录,爬虫运行无需人工干预,你有更多的时间喝茶、聊天、学猿猴。

  如何处理验证码?

  不过,既然网站们已经让你登录了,他们不会那么轻易放过你的。他们要做的就是让小猿们放弃,那就是上传验证码!没错,就是变态的验证码!!作为一个见多识广的老猿猴,到现在还是经常认不出验证码,觉得很丢脸。

  据说有人雇了一群阿姨手动识别验证码;有人利用图像处理技术,特别是热门的深度学习和人工智能技术,自动识别验证码。

  那么,在编写爬虫时遇到验证码该怎么办呢?

  网络爬虫难点三:ajax异步加载甚至JavaScript解密

  前两个难点是基于我们对数据加载过程的研究,然后我们可以用Python代码复现并爬取。

  在第三个难点上,研究数据加载过程可能很痛苦,几乎崩溃。异步加载过程和服务器来回多次,最终数据只能通过JavaScript解密才能看到,是压垮爬虫的最后一根稻草。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线