文章目录

  • 一、简介
  • 二、Scrapy的简单示例
    • 1、先找一个需要爬的网页
    • 2、先给用的浏览器下载一个“XPath”查询插件
      • 2.1 谷歌浏览器方法
      • 2.2 360浏览器的方法(博主用此浏览器,因为可以切换内核)
    • 3、利用Xpath找到要爬的位置
      • 3.1 先利用浏览器找到html对应的元素
      • 3.2 应用Xpath工具找到对应数据
        • 3.2.1 先找到要爬的区域,有唯一标识的标签
        • 3.2.2 利用Xpath工具输入规则获取数据
    • 4、数据继续处理 Scrapy 爬虫框架
      • 4.1 以PyCharm的开发环境为例,先安装环境的包
      • 4.2 创建Scrapy项目
      • 4.3 制定规则,后续处理
      • 4.4 效果图
  • 三、爬虫与反爬虫的较量
    • 1、通过”USER_AGENT“判断模拟用户是否为浏览器的反爬虫技术
      • 1.1 “HTTP status code is not handled or not allowed”错误
      • 1.2 “HTTP status code is not handled or not allowed”的解决方案
    • 2、应对传统的反爬机制
      • 2.1 通过单个IP阈值予以封锁的反爬虫技术
      • 2.2 通过单个session访问超过阈值,予以封锁。
      • 2.3 后台对访问进行统计,如果单个userAgent访问超过阈值,予以封锁。
      • 2.4 robots协议
      • 2.5 道德与利益

一、简介

Scrapy是一个非常简单方便的爬虫框架了,本篇文章一步一步的教你几分钟学会爬虫。

简单了解一下Scrapy的概念。它是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。

本文是讲述的全过程,会比较详细。对于一些有些计算机知识底蕴的人来说直接从4.2开始看Scrapy框架。

本文讲的是Xpath在Scrapy中的应用,其它爬虫方式可参考:
Python开发 之 两种爬虫的方式 正则表达式、XPath

二、Scrapy的简单示例

1、先找一个需要爬的网页

比如我现在想爬一下,姓氏的名字都有哪些
网页地址:http://xh.5156edu.com/page/z2491m7594j19615.html

2、先给用的浏览器下载一个“XPath”查询插件

2.1 谷歌浏览器方法

https://jingyan.baidu.com/article/c910274bb21a57cd361d2d01.html

2.2 360浏览器的方法(博主用此浏览器,因为可以切换内核)

在插件栏→管理→扩展→搜索Xpath→下载Xpath工具
如下图:

3、利用Xpath找到要爬的位置

博主就以360浏览器为例来讲了,其它浏览器也是一个原理

3.1 先利用浏览器找到html对应的元素

按F12进入开发人员工具,然后依次如图点击,找到需要爬的区域,在Elements中找到

3.2 应用Xpath工具找到对应数据

3.2.1 先找到要爬的区域,有唯一标识的标签

在Elements中找到table标签是有id的,如图:

3.2.2 利用Xpath工具输入规则获取数据

规则其实蛮简单的,以下是我总结的一个简单公式:
“//”+唯一标识的标签+[+@+id/class=“要爬的名”+]+/+下一层+/+再下一层+…+最后一层+/+text()
text()代表文本
更多规则可以参考:w3school的语法规则http://www.w3school.com.cn/xpath/xpath_syntax.asp

以此推测出这个网页要爬的规则就是://table[@id=“table5”]/tbody/tr/td/a/text()

4、数据继续处理 Scrapy 爬虫框架

如果后续不需要处理,那就简单了,直接把需要的结果“Ctrl+A”全选后,保存成需要的格式就OK啦!

一般情况,要抓取网页的都不止一个规则的数据,一般都是多个规则。
比如:跟着一个虫爬到的数据,继续爬,爬出各个子网页上的数据。然后再继续爬,……

4.1 以PyCharm的开发环境为例,先安装环境的包

先建立一个项目,Demo_crawler,然后找到Terminal模块,输入命令下载

# 安装scrapy框架
pip install scrapy
# 安装python与windows交互模块
pip install pypiwin32

装好后,如图:

4.2 创建Scrapy项目

创建一个项目

# main_crawler为爬虫项目名称
scrapy startproject main_crawler

编写spider文件的名字和它要爬的网页名

# demo_crawler为爬虫名,http://xh.5156edu.com/page/z2491m7594j19615.html为爬虫想要爬的网页
scrapy genspider demo_crawler "http://xh.5156edu.com/page/z2491m7594j19615.html"

这样就创建了demo_crawler在spiders文件夹下

4.3 制定规则,后续处理

写个简单的处理,就是在爬一次的时候,就保存成name.txt文件
开始爬

# demo_crawler为爬虫名称
scrapy crawl demo_crawler

4.4 效果图

三、爬虫与反爬虫的较量

爬虫抓取技术领域还有一个“白道”的手段,叫做robots协议。你可以在一个网站的根目录下访问/robots.txt,比如让我们一起来看看github的机器人协议,Allow和Disallow声明了对各个UA爬虫的抓取授权。

不过,这只是一个君子协议,虽具有法律效益,但只能够限制那些商业搜索引擎的蜘蛛程序,你无法对那些“野爬爱好者”加以限制的。

1、通过”USER_AGENT“判断模拟用户是否为浏览器的反爬虫技术

1.1 “HTTP status code is not handled or not allowed”错误

简单的反爬机制,就是通过”USER_AGENT“判断模拟用户是否为浏览器
错误码:“ HTTP status code is not handled or not allowed”

1.2 “HTTP status code is not handled or not allowed”的解决方案

在Scrapy的setting.py中,添加浏览器代理即可
比如说:“USER_AGENT = ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36’”

2、应对传统的反爬机制

2.1 通过单个IP阈值予以封锁的反爬虫技术

  • 反爬军
    这个虽然效果还不错,但是其实有两个缺陷,一个是非常容易误伤普通用户,另一个就是,IP其实不值钱,几十块钱甚至有可能买到几十万个IP。所以总体来说是比较亏的。不过针对普通爬虫,这点还是非常有用的。
  • 爬虫军
    解决方案其实也很简单,通过不同的Ip代理就可以解决。有免费的IP代理网站,也有收费的。

2.2 通过单个session访问超过阈值,予以封锁。

  • 反爬军
    这个看起来高级了一些,但是其实效果更差。
  • 爬虫军
    因为session完全不值钱,重新申请一个就可以了。一旦检测到有反爬机制,直接重申即可。

2.3 后台对访问进行统计,如果单个userAgent访问超过阈值,予以封锁。

  • 反爬军
    这个虽然效果也还行,类似于抗生素之类的,效果出奇的好,但是杀伤力过大,误伤非常严重,使用的时候要非常小心。
  • 爬虫军
    虽然效果不咋滴,不过,也好破解,通过随机的User_Agent代理不同的浏览器头衔即可

2.4 robots协议

  • 反爬军
    Robots协议告诉了搜索引擎和爬虫哪些页面可以抓取,哪些不可以抓取。这个协议通常是存放在robots.txt文件里面,位于网站的根目录下
  • 爬虫军
    不过,这只是一个君子协议,虽具有法律效益,但只能够限制那些商业搜索引擎的蜘蛛程序,你无法对那些“野爬爱好者”加以限制的。
    在Scrapy框架中,默认的是遵循,你也可以改成False,不遵循

2.5 道德与利益

有一个说法是,互联网上50%的流量都是爬虫创造的。这个说法虽然夸张了点,但也体现出了爬虫的无处不在。爬虫之所以无处不在,是因为爬虫可以为互联网企业带来收益。

如今,我们制造爬虫和反爬虫的初衷都发生了变化。从一开始的获取信息和保护隐私,变成了如今的获取商业利益和反制对手。法律很难阻止爬虫技术的行为,除非在竞品之间涉及到对用户原创内容的批量搬运,而且整个诉讼过程非常漫长,企业很难表述自己哪里受了损失。

道德还是利益,看你要怎么选择了。

Python开发 之 10分钟教你学会爬虫Scrapy相关推荐

  1. 10分钟学计算机,电脑运行越来越慢?程序员大牛10分钟教你学会电脑瘦身

    原标题:电脑运行越来越慢?程序员大牛10分钟教你学会电脑瘦身 你的电脑是不是越来越慢?这里让程序员大佬用10分钟时间教你学会给电脑软件瘦身,1分钟了解计算机硬件升级.分分钟让你成为别人眼中的计算机大牛 ...

  2. 【云开发】10分钟零基础学会做一个快递查询微信小程序,快速掌握微信小程序开发技能(轮播图、API请求)

    大家好,我叫小秃僧 这次分享的是10分钟零基础学会做一个快递查询微信小程序,快速掌握开发微信小程序技能. 这篇文章偏基础,特别适合还没有开发过微信小程序的童鞋,一些概念和逻辑我会讲细一点,尽可能用图说 ...

  3. 10分钟 教你学会Linux/Unix下的vi文本编辑器

    首先,记住vi编辑器的两个模式:1.命令模式 2.编辑模式.  在一个UNIX/Linux的shell命令或者一个以斜杠(/).问号(?)或冒号(:)开始的vi命令后面用户需要键入回车键,而要切换到v ...

  4. woff字体反爬实战,10分钟就能学会(ttf字体同理)

    声明:本帖子仅是用于学习用途,请勿与用于恶意破坏别人网站,本人不承担法律责任. 来继续学爬虫呀! 很开心,竟然上榜某爬虫练习网站了!!! 来看一下榜单 超激动的!!但是还有两道目前个人解决不了,希望哪 ...

  5. 一分钟教你学会python_十分钟教你学会python编写小游戏

    原标题:十分钟教你学会python编写小游戏 看过,估计大家都已经精通了吧,好的,话不多说,今天就活学活用,用python来编写纸牌游戏21点,江湖人称黑杰克,BLACK JACK-(注意法式卷舌). ...

  6. python编写小游戏17_十分钟教你学会python编写小游戏

    原标题:十分钟教你学会python编写小游戏 看过,估计大家都已经精通了吧,好的,话不多说,今天就活学活用,用python来编写纸牌游戏21点,江湖人称黑杰克,BLACK JACK-(注意法式卷舌). ...

  7. 如何用计算机自动回复微信,10分钟教你用Python实现微信自动回复功能

    01 前言&&效果展示 相信大家都有忙碌的时候,不可能一直守在微信上及时回复消息.但微信又不能像QQ一样设置自动回复.无妨,今天,我们就来用Python实现微信的自动回复功能吧,并且把 ...

  8. 10分钟教你用python打造贪吃蛇超详细教程

    更多精彩尽在微信公众号[程序猿声] 10分钟教你用python打造贪吃蛇超详细教程 在家闲着没妹子约, 刚好最近又学了一下python,听说pygame挺好玩的.今天就在家研究一下, 弄了个贪吃蛇出来 ...

  9. 10分钟教你用python如何正确把妹

    前言 今天没妹子约,刚好研究一下.如何用神奇的python打造一个把妹神器吧.看完这个,你们就能走向人生巅峰,迎娶白富美啦. 我知道你们想看看效果 当然啦,这只是测试版的效果,真正的版本可比这个厉害多 ...

最新文章

  1. python数据驱动读取用例_Python Selenium 之数据驱动测试
  2. linux adc测试程序,基于Qt4.7的ADC测试程序
  3. linux java 环境配置_linux下java开发环境配置
  4. NGINX基于Tomcat配置负载均衡
  5. SQL查询提速秘诀,避免锁死数据库的数据库代码
  6. arcgis 属性表中起点终点创建线_一种GIS单线路网自动生成双线路网的方法与流程...
  7. 关于已移除sd卡,手机不认卡的原因和解决办法(转)
  8. linux flash插件安装方法,Linux系统下安装Flash浏览器插件的方法
  9. Excel表格导入数据库进行判断是否有相同的数据
  10. tagcanvas.min.js 文字云
  11. 开始使用Elasticsearch (2): 了解如何进行搜索
  12. Lumaqq移植到Android 之进阶篇
  13. 使用Python绘制相关性图
  14. OpenLayers基础:多方底图
  15. 英飞凌TRAVEO II介绍
  16. 电脑外接屏幕时“WindowsServer异常退出”
  17. archlinux 安装搜狗输入法
  18. 戴尔g3最新版的声卡,有可能导致插上耳机没有声音
  19. “互联网+”六年,云徙科技打造数字化经营增长“头牌”
  20. DW_apb_i2c 使用介绍2--i2c初始化以及读写eeprom测试

热门文章

  1. C语言 for循环语句
  2. 【研究生工作周报】(stylegan)
  3. 武林传之刀剑江湖录(上)攻略
  4. 计算机垃圾回收站内容怎么恢复,电脑回收站文件被删除了如何恢复|电脑恢复回收站文件的方法...
  5. 美图美妆由Try Try接手运营
  6. Mac下使用华为C8650进行安卓开发
  7. Top 10 Silktest blogs/forums
  8. react-ts项目使用地图
  9. 刷脸支付巨额补贴和产品更新换代的重拳之下
  10. 我的电脑里面有百度网盘 win10此电脑有百度网盘 这样删掉