抓取网页数据违法吗(urllib2和urllib的第二种方案有什么区别?怎么做?)

优采云 发布时间: 2022-02-02 08:02

  抓取网页数据违法吗(urllib2和urllib的第二种方案有什么区别?怎么做?)

  urllib2 和 urllib 是 python 自己的模块,可以用来发送处理请求。虽然比较灵活,但是API不好用,一般需要封装两次。过去我也封装过,最后发现我封装的模块是无限流行的。它接近一个非常成熟的requests库,所以我们直接使用requests。当然,请求只是发送和接收请求。页面分析需要配合lxml或者beautifulsoup等第三方库。高级爬虫不仅发送和处理请求,还需要处理异常、请求速度控制等问题。这需要我们编写额外的代码来控制。当然,我们也可以自己写。这只是时间问题,但完全没有必要。

  二、scrapy 框架

  scrapy 是爬虫采集的领导者。目前,无论我做的项目多么复杂或复杂,我都使用scrapy。对于请求调度,已经封装了异常处理,第三方scrapy-redis也可以支持分布式,我们专注于更重要的页面分析和规则编写,代码可以参考我github上的例子。

  三、python 硒

  我称这种方法为终极杀手。一般在绝对没有办法的情况下使用。以前我使用搜索引擎爬取文章时,搜索引擎使用了比较难的反爬机制。而不断的变化,让人找不到规律。最典型的特点就是cookie会随机隐藏在某个页面的js和图片中。解决方法是模拟浏览器的行为加载js等所有静态资源文件。如果你自己写一个浏览器 解析太垃圾了。如果chrome浏览器可以打开界面,通过chrome加载方式获取页面内容,这就是selenium。Selenium 加上随机等待时间可以模拟非常类似于人类的操作行为。缺点是速度慢,但一般履带式对爬行速度要求不高,重要的是稳定性。这种方式比较适合大型网站爬取反爬机制。

  综上,对于大部分爬虫的需求,直接用scrapy来解决。如果不能解决,可以使用第一种或第三种解决方案。就是这么简单。

  python爬虫可以做什么

  (1) 不同领域和背景的用户往往检索目的和需求不同,一般搜索引擎返回的结果中收录大量用户不关心的网页。

  (2)一般搜索引擎的目标是最大化网络覆盖,有限的搜索引擎服务器资源和无限的网络数据资源之间的矛盾将进一步加深。

  (3)万维网数据形式的丰富和网络技术的不断发展,催生了图片、数据库、音频、视频、多媒体等大量不同的数据。通用搜索对于这些信息内容密集、结构一定的数据,引擎往往无能为力。

  (4)一般搜索引擎大多提供基于关键词的检索,难以支持基于语义信息的查询。

  为了解决上述问题,出现了定向爬取相关网页资源的专注爬虫。聚焦爬虫是一种自动下载网页的程序。它根据给定的爬取目标有选择地访问万维网上的网页和相关链接,以获取所需的信息。与通用网络爬虫不同,聚焦爬虫不追求大覆盖,而是旨在爬取与特定主题内容相关的网页,并为面向主题的用户查询准备数据资源。

  反爬虫

  1. 基本的反爬方式主要是检测请求头中的字段,如:User-Agent、referer等,这种情况下只需要带上请求中对应的字段即可。构造的http请求的字段最好与浏览器中发送的字段完全相同,但不是必须的。

  2. 基于用户行为的反爬方式主要统计后台访问的IP(或User-Agent)。当它超过某个阈值时,它将被阻止。针对这种情况,可以使用代理服务器解决,每隔几次请求,切换使用的代理的IP地址(或者使用User-Agent列表解决,每次从列表中随机选择一个) )。这种反爬虫方法可能会无意中伤害用户。

  3.如果你要抓的数据是通过ajax请求获取的,如果通过网络分析可以找到ajax请求,也可以分析请求需要的具体参数,那么就可以模拟对应的http请求了直接,并在响应中获取对应的数据。在这种情况下,它与普通请求没有什么不同。

  4. 基于JavaScript的反爬方式主要是在响应数据页之前返回一个带有JavaScript代码的页面,用于验证访问者是否有JavaScript执行环境,从而判断浏览器是否使用。.

  通常,这段JS代码执行完后,会发送一个带参数key的请求,后台通过判断key的值来判断是响应真实页面还是响应假页面或错误页面。由于key参数是动态生成的,而且每次都不一样,很难分析其生成方式,无法构造出对应的http请求。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线