美文网首页python热爱者Python新世界Python
这应该是2018年最详细的python爬虫入门教程了!

这应该是2018年最详细的python爬虫入门教程了!

作者: 48e0a32026ae | 来源:发表于2018-10-29 15:53 被阅读11次

    Python against futuristic black and blue

    爬虫入门

    爬虫(又被称为网页蜘蛛,网络机器人)就是模拟客户端发送网络请求,学习Python中有不明白推荐加入交流群

                    号:516107834

                    群里有志同道合的小伙伴,互帮互助,

                    群里有不错的学习教程!

    接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。

    原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做。

    根据被爬网站的数量的不同,我们把爬虫分为:

    通用爬虫 :通常指搜索引擎的爬虫

    聚焦爬虫 :针对特定网站的爬虫

    Robots协议:网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,但它仅仅是道德层面上的约束。

    浏览器会主动请求js,css等内容,js会修改页面的内容,js也可以重新发送请求,最后浏览器渲染出来的内容在elements中,其中包含css,图片,js,url地址对应的响应等。

    但是在爬虫中,爬虫只会请求url地址,对应的拿到url地址对应的响应。浏览器渲染出来的页面和爬虫请求的页面并不一样。所以在爬虫中,需要以url地址对应的响应为准来进行数据的提取。

    url的形式:scheme://host[:port#]/path/…/[?query-string][#anchor]

    scheme:协议(例如:http, https, ftp)

    host:服务器的IP地址或者域名

    port:服务器的端口(如果是走协议默认端口,80 or 443)

    path:访问资源的路径

    query-string:参数,发送给http服务器的数据

    anchor:锚(跳转到网页的指定锚点位置)

    HTTP:超文本传输协议,默认端口号:80

    HTTPS:HTTP + SSL(安全套接字层),默认端口号:443 (HTTPS比HTTP更安全,但是性能更低)

    HTTP常见请求头

    Host (主机和端口号)

    Connection (链接类型)

    Upgrade-Insecure-Requests (升级为HTTPS请求)

    User-Agent (浏览器名称)

    Accept (传输文件类型)

    Referer (页面跳转处)

    Accept-Encoding(文件编解码格式)

    Cookie (Cookie)

    x-requested-with :XMLHttpRequest (是Ajax 异步请求)

    常见的请求方法

    GET

    POST

    有关 GET 请求的其他一些注释:

    GET 请求可被缓存

    GET 请求保留在浏览器历史记录中

    GET 请求可被收藏为书签

    GET 请求不应在处理敏感数据时使用

    GET 请求有长度限制

    GET 请求只应当用于取回数据

    有关 POST 请求的其他一些注释:

    POST 请求不会被缓存

    POST 请求不会保留在浏览器历史记录中

    POST 不能被收藏为书签

    POST 请求对数据长度没有要求

    响应状态码(status code)

    常见的状态码:

    200:成功

    302:临时转移至新的url

    307:临时转移至新的url

    404:not found

    500:服务器内部错误

    代理IP的分类:

    透明代理(Transparent Proxy),透明代理虽然可以直接“隐藏”你的IP地址,但是还是可以从HTTP_X_FORWARDED_FOR来查到你是谁。

    匿名代理(Anonymous Proxy),匿名代理比透明代理进步了一点:别人只能知道你用了代理,无法知道你是谁。

    混淆代理(Distorting Proxies),与匿名代理相同,如果使用了混淆代理,别人还是能知道你在用代理,但是会得到一个假的IP地址,伪装的更逼真。

    高匿代理(Elite proxy或High Anonymity Proxy),高匿代理让别人根本无法发现你是在用代理,所以是最好的选择。

    Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量的代码,就能够快速的抓取。

    Scrapy 使用了Twisted['twɪstɪd]异步网络框架,可以加快我们的下载速度。

    异步:调用在发出之后,这个调用就直接返回,不管有无结果

    非阻塞:关注的是程序在等待调用结果(消息,返回值)时的状态,指在不能立刻得到结果之前,该调用不会阻塞当前线程。

    scrapy的流程

    从上图可以衍生出下图,个人觉得更加好理解一些

    其流程可以描述如下:

    调度器把requests-->引擎-->下载中间件--->下载器

    下载器发送请求,获取响应---->下载中间件---->引擎--->爬虫中间件--->爬虫

    爬虫提取url地址,组装成request对象---->爬虫中间件--->引擎--->调度器

    爬虫提取数据--->引擎--->管道

    管道进行数据的处理和保存

    scrapy中每个模块的具体作用:

    scrapy项目实现流程:

    创建一个scrapy项目:scrapy startproject +<项目名字>

    生成一个爬虫:scrapy genspider +<爬虫名字> + <允许爬取的域名>

    提取数据:完善spider,使用xpath等方法

    保存数据:pipeline中保存数据

    scrapy.cfg :项目的配置文件

    mySpider/ :项目的Python模块,将会从这里引用代码

    mySpider/items.py :项目的目标文件

    mySpider/pipelines.py :项目的管道文件

    mySpider/settings.py :项目的设置文件

    mySpider/spiders/ :存储爬虫代码目录

    认识scrapy的debug信息

    每次程序启动后,默认情况下,终端都会出现很多的debug信息,那么下面我们来简单认识下这些信息

    scrapy shell的使用

    response.url:当前响应的url地址

    response.request.url:当前响应对应的请求的url地址

    response.headers:响应头

    response.body:响应体,也就是html代码,默认是byte类型

    response.requests.headers:当前响应的请求头

    settings.py中的重点字段和内涵

    USER_AGENT 设置ua

    ROBOTSTXT_OBEY 是否遵守robots协议,默认是遵守

    CONCURRENT_REQUESTS 设置并发请求的数量,默认是16个

    DOWNLOAD_DELAY 下载延迟,默认无延迟

    COOKIES_ENABLED 是否开启cookie,即每次请求带上前一次的cookie,默认是开启的

    DEFAULT_REQUEST_HEADERS 设置默认请求头

    SPIDER_MIDDLEWARES 爬虫中间件,设置过程和管道相同

    DOWNLOADER_MIDDLEWARES 下载中间件

    相关文章

      网友评论

      本文标题:这应该是2018年最详细的python爬虫入门教程了!

      本文链接:https://www.haomeiwen.com/subject/qnwbtqtx.html