我是靠谱客的博主 眯眯眼大神,最近开发中收集的这篇文章主要介绍scrapy常用问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、动态加载又对及时性要求很高怎么处理?
    1,selenium+Phantomjs
    2,尽量不适用sleep而是用WebDriverWait

2、分布式爬虫主要解决什么问题?
    1,ip        2,宽带    3,cpu    4,io

3、什么是URL?
    URL,即统一资源定位符,也就是常见的网址,统一资源定位符是对可以从互联网是得到的资源的位置和访问方法的一种简介的表示
    是互联网上标准资源的地址。互联网是的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

4、python爬虫有那些常用技术?
    Scrapy    Beautiful Soup    urllib        urllib2        requests

5、简单说一下你对scrapy的了解?
    scrapy是一个快速(fast),高层次(high-leve)的基于python 的web爬虫框架,
    用来下载,并解析web页面,其parse->yield item->pipeline流程是所有爬虫的固有模式,
    构造形式主要分 spider pypipeline.py itme.py decorator.py middlewares.py setting.py

6、scrapy的优缺点?
    1,优点:scrapy是异步的
        采取可读性更强的xpath代替正则强大的统计和log系统(日志文件),同事在不同的url上爬行支持shell方式,方便独立调试写middleware(中间件),
        方便写一些同意的过滤器,通过管道的方式存入数据库
            log系统:
            log是日志文件,通常是系统或者某些软件对已完成的某种处理的记录,以便将来做为参考,

    2、缺点:基于python 的爬虫框架,扩展性比较差
        基于twisted框架,运行中的exception( 异常处理机制)是不会干掉reactor(异步应用基础库),并且一步框架出错后是不会停掉其他任务的,数据出错后难以察觉,
            twisted框架:
            twisted是一个封装好的网络通信的库,可以帮助我们快速进行网络编程
            注意,python3中,字符串必须转码成utf8的格式,否则无法发送。比如str(“test”).encode(“utf8”)即可

7、scrapy和request?
    1,scrapy是封装起来的框架,它包含了下载器,解析器,日志异常处理,基于多线程,twisted的方式处理,
    对于单个固定的网站爬取开发,有优势,但是对于多网站爬取100个网站,并发及分布式处理方面,不够灵活,不便调整与扩展,
    2,request是一个HTTP库,它只是用来,进行请求,对于HTTP请求,他是一个强大的库,下载,解析全部自己处理,灵活性更高,
    高并发与分布式部署也非常灵活,对于功能可以更好实现,

8、五层网络模型?
    应用层—http ftp dns nfs
    传输层—tcp --udp
    网络成—ip icmp igmp
    链路层—data link
    物理层—media
    设置ip和掩码
        ifconfig eth0 102.168.13.225 netmash 255.255.255.0
    设置网关
        route add default gw 192.168.5.1

9、常用反爬措施?
    1、添加代理
    2、降低访问频率
    3、User-Agent动态 HTML数据加载验证码处理Cookie

10、git和post请求有什么区别?
    区别:
        GET:
            从指定的服务器中获取数据,GET请求能够被缓存,会保存在浏览器的浏览记录中,
            以GET请求的URL能够保存为浏览器书签,GET请求有长度限制,GET请求主要用以获取数据
        POST:
            POST请求不能被缓存,不会呗保存在浏览器记录中,请求的URL无法村委浏览器书签,
            POST请求没有长度限制,POST请求会把请求的数据防止在HTTP请求包的包体中
            POST的安全性比GET的高,可能修改变服务器上的资源请求
    应用场合:
        POST:
            请求的结果有持续性的副作用(数据库内添加新的数据行),
            若使用GET方法,则表单上的数据肯能让URL过长,
            要传送的数据不是采用7位的ASCLL编码,
        GET:
            请求是为了查找资源,HTML表单数据仅用来帮助搜索,
            请求结果无持续性的副作用,
            收集的数据及HTML表单内的输入字段的名称总长不能超过1024个字符
        HTTP请求会有那些信息发送到后台服务器:
            请求行(请求方式,资源路径和HTTP协议版本)POST/demo/login HTTP/1.1
            请求消息头
            消息正问(也叫实体内容) username=xxxx&password=1234
            
11、描述下scrapy框架运行的机制?
    1,从start_url里获取第一批url并发送请求,请求由引擎交给调度器入请求队列,获取完毕后,调度器将请求队列里的请求交给下载器
    去获取请求对应的响应资源,并将响应交给自己编写的解析方法做提取处理:如果提取所需要的数据,则交给管道文件处理,
    2,如果提取出url,则继续执行之前的步骤(发送url请求,并由引擎将请求交给调度器加入队列),知道请求队列里没有请求,程序结束,

12、实现登录的方式有那些?
    1,使用一个具有登录状态的cookie,结合请求头一起发送,可以直接发送get请求,访问登录后才能访问的页面,
    2,先发送登录解密的get请求,在登录页面HTML里获取登录需要的数据,然后结合账号密码,在发送post请求,即可登录成功
    然后根据获取的cookie信息,继续访问之后的页面,

13、简单介绍下scrapy的异步处理
    scrapy框架的异步机制是基于twisted异步网络框架处理的,在settings.py文件里可以设置具体的并发数量值-默认值16
 

最后

以上就是眯眯眼大神为你收集整理的scrapy常用问题的全部内容,希望文章能够帮你解决scrapy常用问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部