爬虫-考核题

一. Requests模块

1.    简述爬虫的概念

   爬虫就是通过编写程序模拟浏览器上网,然后让其去互联网上抓取数据的过程。

2.    爬虫有几种分类,在使用场景中

主要有两种:

在编写爬虫时先下载到本地进行测试,然后再进行正规的验证

1.通用爬虫:通用爬虫是搜索引擎(Baidu、Google、Yahoo等)“抓取系统”的重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。  简单来讲就是尽可能的;把互联网上的所有的网页下载下来,放到本地服务器里形成备分,在对这些网页做相关处理(提取关键字、去掉广告),最后提供一个用户检索接口。 

搜索引擎如何抓取互联网上的网站数据?
门户网站主动向搜索引擎公司提供其网站的url
搜索引擎公司与DNS服务商合作,获取网站的url
门户网站主动挂靠在一些知名网站的友情链接中
2.聚焦爬虫:聚焦爬虫是根据指定的需求抓取网络上指定的数据。例如:获取豆瓣上电影的名称和影评,而不是获取整张页面中所有的数据值。

3.    简述robots协议的概念也作用

 - 如果自己的门户网站中的指定页面中的数据不想让爬虫程序爬取到的话,那么则可以通过编写一个robots.txt的协议文件来约束爬虫程序的数据爬取。

robots协议的编写格式可以观察淘宝网的robots(访问www.taobao.com/robots.txt即可)。但是需要注意的是,该协议只是相当于口头的协议,并

没有使用相关技术进行强制管制,所以该协议是防君子不防小人。但是我们在学习爬虫阶段编写的爬虫程序可以先忽略robots协议。
# Obey robots.txt rulesROBOTSTXT_OBEY = True

4.    什么是反爬机制和反反爬机制

   - 门户网站通过相应的策略和技术手段,防止爬虫程序进行网站数据的爬取。反爬机制:

(1)U-A校验模式

当你在家用浏览器上网的时候,每次发送请求时请求头会自动携带浏览器参数还有系统参数给服务器。从而让服务器知道这是一个人啊!一次来作为反爬机制的一种。

(2)限制访问频率

正常人浏览网站点击速度有多少?机器访问快多了,短时间发送几百个请求。这时候服务器检测到后就可以通过设置一个速度去封IP,例如一分钟访问200次就封锁IP

(3)设置验证码

很多朋友都不明白为什么要验证码?我小时候想了这个问题很久很久,自从学了爬虫才明白,这东西真的是为了验证我是一个人在上网而生得。这种方法就让爬虫更加困难了。

(4)通过账号限制

通过登录才可以浏览网站。

反反爬虫机制:

- 爬虫程序通过相应的策略和技术手段,破解门户网站的反爬虫手段,从而爬取到相应的数据。

5.    简述使用requests模块进行数据爬取的大致流程

6.    简述使用requests模块爬取ajax加载数据爬取的大致流程

7.    简述User-Agent参数的作用

8.    在requests模块中接触过哪些反爬机制

9.    介绍下requests模块中get和post方法常用参数的作用

10.  简述session的创建流程及其该对象的作用

11.  简述如何使用requests模块进行模拟登录,并抓取登录成功后的某个二级页面数据。

12.  简述如何使用requests模块设置代理IP

二. 数据解析

1.    简述使用在使用正则进行解析时用到的re.S和re.M的作用和区别

2.    简述如何使用xpath进行数据解析

3.    简述如何使用bs4进行数据解析

4.    xpath方法返回值类型是什么

5.    在xpath中如何/text()和//text()的区别是什么

6.    id为su的div标签有一个子标签ul,ul下有十个li标签,每一个li标签下都有一个a标签,如何编写xpath表达式可以解析到a标签的href属性值

7.    class为wd的div标签有一个子标签ul,ul下有十个li标签,每一个li标签下都有一个a标签,如何编写xpath表达式可以解析到a标签中的文本内容

8.    简述BeautifulSoup模块中find和findall方法的区别

9.    简述BeautifulSoup模块中select方法的使用

10.  简述xpath插件的作用

三. Scrapy框架

1.    简述scrapy框架的安装流程

2.    scrapy中持久化操作有几种形式,分别如何实现?

3.    简述start_requests方法的作用

4.    如何进行post请求发送,在scrapy中

5.    如何手动进行一个get请求的发送,在scrapy中

6.    简述管道文件的作用

7.    简述Request方法中callback参数的作用

8.    简述Request方法中meta参数的作用

9.    简述下载中间件的作用

10.  简述如何设置scrapy项目的代理IP

11.  简述CrawlSpider中链接提取器的作用

12.  简述CrawlSpider中规则解析器的作用

13.  简述scrapy核心组件的工作原理

14.  原生scrapy框架为何不能实现分布式

15.  简述基于scrapy-redis分布式的流程

原文地址:https://www.cnblogs.com/foremostxl/p/10109198.html

时间: 2024-11-02 15:25:38

爬虫-考核题的相关文章

公司考核题-(ORACLE篇一)

今天无聊翻腾刚毕业时的电脑,发现11年在单位实习时的一些练习题及考核试题和答案,现在在此记录一下,方便以后查阅. 考核一: --1.列出薪金比"SMITH"多的所有雇员 select * from emp where sal > (select sal from emp where ename='SMITH'); --2.找出佣金高于薪金60%的雇员 select * from emp where comm>(sal*0.6); --3.找出收取佣金的雇员的不同工作 sel

公司考核题-(ORACLE篇二)

本篇主要考察的是算法--递归编程(树形的生成)--->本篇中的代码也可以使用ORACLE中的"CONNECT BY"来完成要求. 考核题目如下: 程序如下: 1.创建表deptframwork insert into deptframwork (DEPTID, UPPERID, DEPTNAME, DEPTNUM, CREATETIME, WHOLENAME, EMPLOYEE) values (1, 0, '省公司电力本部', 1001, to_date('03-02-2010

iOS 第四期考核题

1.对字符串“2015-09-01 08:19:10”操作,输出"08:19:10".要求使用两种截取方式. 2.数组中存取以下数据: @[@{@"name":@"陈丰",@"age":@"32"}, @{@"name":@"孙明",@"age":@"24"}, @{@"name":@"王明&quo

iOS 第五期考核题

1 /** 2 * 第1题 请将如下数据存储成字典,并将字典内容以字符串形式输出,输出:"XXX,年龄XXX岁,职业XXX"(将XXX替换为相应的数据). 3 */ 4 5 NSString *name = @"王重阳"; 6 NSInteger age = 56; 7 NSString *job = @"道长"; 8 9 10 NSDictionary *[email protected]{@"name":name, 11

iOS 第六期考核题

NSArray *array = @[CreateDict(@"王思聪", 27, YES), CreateDict(@"范冰冰", 35, NO), CreateDict(@"马云", 51, YES), CreateDict(@"霍建华", 36, YES), CreateDict(@"赵丽颖", 28, NO)]; //第1题 请按照年龄的升序排序输出,输出样式为:王思聪,男性,今年27岁 //第2题

考核题 5

#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { /** * 第1题 请将如下数据存储成字典,并将字典内容以字符串形式输出,输出:"XXX,年龄XXX岁,职业XXX"(将XXX替换为相应的数据). */ NSString *name = @"王重阳"; NSInteger age = 56; NSString *jo

考核题 4

#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //1.对字符串“2015-09-01 08:19:10”操作,输出"08:19:10".要求使用两种截取方式. /*2.数组中存取以下数据: @[@{@"name":@"陈丰",@"age":@"32"},

iOS 第七期考核题

1 //1.以下是身份证号,输出身份证人的性别,年龄 2 // NSString *[email protected]; 3 //身份证倒数#2位是偶数则为女生 4 NSString *idCard=@"210423198809040427"; 5 int sex1=[[idCard substringWithRange:NSMakeRange(16, 1)] intValue]; 6 if((sex1%2)==0){ 7 NSLog(@"性别:女"); 8 }el

爬虫-Chrome-问题1

ChromeDriver设置headless参数就会出现未知错误,,非得设置参数--no-sandbox:原因待查,找了好久,供参考. cited from stackoverflow I was having the same problem on centos7.1 because I was the root user, and it was resolved after adding the code chrome_options.add_argument('--no-sandbox')