爬虫(三)爬虫基础题整理回顾

6 篇文章 0 订阅
5 篇文章 0 订阅

目录

1.当输入一个类似www.baidu.com的网址时,返回页面的过程发生了什么?

2.Scrapy框架是如何进行二次请求的,参数有哪些,各代表什么含义?

3.scrapy框架的中间件有几种,简单介绍其中的一个的使用?

4.re模块中,match findall search 的区别?

5.写出创建一个scrapy项目到执行的命令,以百度为例

6.scrapy的优缺点?

7.请说明HTTP状态码的用途,请说明常见的状态码机器意义?


1.当输入一个类似www.baidu.com的网址时,返回页面的过程发生了什么?

(1)浏览器向DNS服务器发送www.baidu.com域名解析请求

(2)DNS服务器返回解析后的ip给客户端浏览器,浏览器向该ip发送页面请求

(3)服务器接收到请求后,查询该页面,并将页面发送给客户端浏览器

(4)客户端浏览器接收到页面后,解析页面中的引用,并再次向服务器发送引用资源请求;

(5)服务器接收到资源请求后,查找并返回资源给客户端

(6)客户端浏览器接收到资源后,渲染,输出页面展现给用户

 

2.Scrapy框架是如何进行二次请求的,参数有哪些,各代表什么含义?

yield scrapy.Request(url=detail_url,callback=self.parse_detail,mete={'data':item},encoding='utf-8',dont_filter=True)

url = detail_url  传递二次访问页面的url

callback=self.parse_detail  处理二次返回的解析函数

meta = {'data':item}  将一层所需数据传递到二层函数

encoding='utf-8'   编码

dont_filter=True  这个URL不参与去重

 

3.scrapy框架的中间件有几种,简单介绍其中的一个的使用?

(1) Spider Middleware  和 Downloader Middleware  

(2)Downloader Middleware 有以下几个函数被管理

process_request  request通过下载中间件时,该方法被调

process_response 下载结果经过中间件时被此方法处理

process_exception 下载过程中出现异常时被调用

4.re模块中,match findall search 的区别?

(1)match re.match(pattern,string[flags])   

从首字母开始匹配,string如果包含pattern子串,则匹配成功,返回Match对象,失败返回None,若要完全匹配,pattern要以$结尾

(2)search   re.search(pattern,string[flags])  

若string中包含pattern子串,则返回search对象,否则返回None,注意,如果string中存在多个pattern子串,只返回第一个

(3)findall   re.findall(pattern,string[flags])

返回的string中所有与pattern相匹配的全部子串,返回形式为数组

 

5.写出创建一个scrapy项目到执行的命令,以百度为例

创建:

scrapy startproject baidu

cd baidu

scrapy genspider bd baidu.com

启动:

scrapy crawl bd

 

6.scrapy的优缺点?

优点:

(1)scrapy是异步的

(2)采取可读性更强的xpath代替正则

(3)强大的统计和log系统

(4)同时在不同的url上爬行

(5)支持shell方式,方便独立测试

(6)有middleware 方便写统一的过滤器

(7)通过管道的方式存入数据库

缺点:

(1)基于python的爬虫框架,扩展性比较差

(2)基于twisted框架,运行中的exception是不回干掉reactor(反应器),并且异步框架出错后是不会停掉其他任务的,数据出错后难以察觉

 

7.请说明HTTP状态码的用途,请说明常见的状态码机器意义?

通过状态码告诉客户端服务器的执行状态,以判断下一步该执行什么操作。

常见的状态机器码有:

100-199:表示服务器成功接收部分请求,要求客户端继续提交其余请求才能完成整个处理过程

200-299:表示服务器成功接收请求并已完成处理过程。常用200(请求成功)

300-399:为完成请求,客户需要进一步细化请求。302(所有请求页面或已经临时转移到新的url)304/307(使用缓存资源)

400-499:客户端请求有错误。403(服务器拒绝访问,权限不够) 404(服务器无法找到被请求页面)

500-599:服务器端出现错误。500(请求未完成,服务器遇到不可预知的情况)

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值