附答案 | 最强Python面试题之爬虫常见问题(2)
写在之前
大家好呀,我是帅蛋。
周末愉快呀,帅蛋的Python 爬虫系列来啦,主要分为两部分内容来讲呀,一部分是常见问题,另一部分是框架问题。
今天依然是常见问题,一共 12 道题。Python 面试八股文尽在帅蛋的【最强Python面试题】,大家一定要记得点赞收藏呀!!!
欢迎和帅蛋聊一聊~扣扣2群:609771600,获取最新秋招信息 & 内推进度,日常聊聊迷茫吹吹牛皮,抱团取暖
顺便提一句,我所有和面试相关的内容都会放在#帅蛋的面试空间# 中,大家可以关注下这个话题~
我会尽我最大的努力帮助到大家哒!!!
主要内容
这些面试题是我结合自己的经验整理的,主要就是下面这 5 个专题:
- Python 基础面试题(已完成)
- Python 进阶(已完成)
- Python 后台开发(已完成)
- 爬虫
- 机器学习
PS:往期文章可以看文末链接哟~
对每道面试题我都会附带详细的答案,有些我觉得重要的内容会详细讲解,虽然是面试八股文,我还是希望大家不是只“知其然”,更得“知其所以然”。
关于更新频率,每天我会更新 10 道题左右,总共会有差不多 200 道。
无论是准备面试还是自己学习,这份面试题绝对值得你去看,去学习。
大家可以关注我,再关注我,使劲关注我,不要错过每天的更新~
以下是正文
Python 爬虫常见问题第二部分,大家一定要记得点赞收藏,一起加油!
欢迎和帅蛋聊一聊~扣扣2群:609771600,获取最新秋招信息 & 内推进度,日常聊聊迷茫吹吹牛皮,抱团取暖
1、cookie 过期的处理问题?
因为 cookie 存在过期的现象,一个很好的处理方法就是做一个异常类,如果有异常的话 cookie 抛出异常类在执行程序。
2、动态加载又对及时性要求很高怎么处理?
Selenium + Phantomjs,尽量不使用 sleep 而使用 WebDriverWait
3、谈一谈你对 Selenium 和 PhantomJS 了解?
Selenium 是一个 Web 的自动化测试工具,可以根据我们的指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生。Selenium 自己不带浏览器,不支持浏览器的功能,它需要与第三方浏览器结合在一起才能使用。但是我们有时候需要让它内嵌在代码中运行,所以我们可以用一个叫 PhantomJS 的工具代替真实的浏览器。Selenium 库里有个叫 WebDriver 的 API。WebDriver 有点儿像可以加载网站的浏览器,但是它也可以像 BeautifulSoup 或者其他 Selector 对象一样用来查找页面元素,与页面上的元素进行交互 (发送文本、点击等),以及执行其他动作来运行网络爬虫。
PhantomJS 是一个基于 Webkit 的“无界面”(headless)浏览器,它会把网站加载到内存并执行页面上的 JavaScript,因为不会展示图形界面,所以运行起来比完整的浏览器要高效。相比传统的 Chrome 或 Firefox 浏览器等,资源消耗会更少。
如果我们把 Selenium 和 PhantomJS 结合在一起,就可以运行一个非常强大的网络爬虫了,这个爬虫可以处理 JavaScript、Cookie、headers,以及任何我们真实用户需要做的事情。
主程序退出后,selenium 不保证 phantomJS 也成功退出,最好手动关闭 phantomJS 进程。(有可能会导致多个 phantomJS 进程运行,占用内存)。
WebDriverWait 虽然可能会减少延时,但是目前存在 bug(各种报错),这种情况可以采用 sleep。phantomJS 爬数据比较慢,可以选择多线程。如果运行的时候发现有的可以运行,有的不能,可以尝试将 phantomJS 改成 Chrome。
4、代理 IP 里的“透明”“匿名”“高匿”分别是指?
(1) 透明代理
它的意思是客户端根本不需要知道有代理服务器的存在,但是它传送的仍然是真实的 IP。你要想隐藏的话,不要用这个。
(2) 普通匿名代理
普通匿名代理能隐藏客户机的真实 IP,但会改变我们的请求信息,服务器端有可能会认为我们使用了代理。不过使用此种代理时,虽然被访问的网站不能知道你的 ip 地址,但仍然可以知道你在使用代理,当然某些能够侦测 ip 的网页仍然可以查到你的 ip。
(3) 高匿名代理
高匿名代理不改变客户机的请求,这样在服务器看来就像有个真正的客户浏览器在访问它,这时客户的真实 IP 是隐藏的,服务器端不会认为我们使用了代理。
设置代理有以下两个好处
- 让服务器以为不是同一个客户端在请求
- 防止我们的真实地址被泄露,防止被追究
5、robots 协议有什么用处?
Robots 协议:网站通过 Robots 协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。
6、为什么 requests 请求需要带上 header?
原因是:模拟浏览器,欺骗服务器,获取和浏览器一致的内容
header 的形式:字典
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
用法: requests.get(url,headers=headers)
7、dumps,loads 与 dump,load 的区别?
json.dumps() 将 pyhton 的 dict 数据类型编码为 json 字符串
json.loads() 将 json 字符串解码为 dict 的数据类型
json.dump(x,y) x 是 json 对象, y 是文件对象,最终是将 json 对象写入到文件中
json.load(y) 从文件对象 y 中读取 json 对象
8、平常怎么使用代理的?
(1) 自己维护代理池
(2) 付费购买(目前市场上有很多 ip 代理商,可自行百度了解,建议看看他们的接口文档(API&SDK))
9、IP 存放在哪里?怎么维护 IP?对于封了多个 ip 的,怎么判定 IP 没被封?
存放在数据库(redis、mysql 等)
维护多个代理网站
一般代理的存活时间往往在十几分钟左右,定时任务,加上代理 IP 去访问网页,验证其是否可用,如果返回状态为 200,表示这个代理是可以使用的。
10、怎么获取加密的数据?
(1) Web 端加密可尝试移动端(app)
(2) 解析加密,看能否破解
(3) 反爬手段层出不穷,js 加密较多,只能具体问题具体分析
11、假如每天爬取量在 5、6 万条数据,一般开几个线程,每个线程 ip 需要加锁限定吗?
(1) 5、6 万条数据相对来说数据量比较小,线程数量不做强制要求(做除法得一个合理值即可)
(2) 多线程使用代理,应保证不在同时一刻使用一个代理 IP
12、怎么监控爬虫的状态?
(1) 使用 python 的 STMP 包将爬虫的状态信心发送到指定的邮箱
(2) Scrapyd、pyspider
(3) 引入日志
已完成
Python 基础题
- 附答案 | 最强Python面试题之Python基础题(1)
- 附答案 | 最强Python面试题之Python基础题(2)
- 附答案 | 最强Python面试题之Python基础题(3)
- 附答案 | 最强Python面试题之Python基础题(4)
Python 进阶题
- 附答案 | 最强Python面试题之Python进阶题第一弹
- 附答案 | 最强Python面试题之Python进阶题第二弹
- 附答案 | 最强Python面试题之Python进阶题第三弹
- 附答案 | 最强Python面试题之Python进阶题第四弹
Python 后台开发
- 附答案 | 最强Python面试题之Python开发第一弹
- 附答案 | 最强Python面试题之Python开发第二弹
- 附答案 | 最强Python面试题之Python开发第三弹
- 附答案 | 最强Python面试题之Python开发第四弹
以上就是今天的内容,我是帅蛋,我们明天见~
❤️ 欢迎关注我,有问题,找帅蛋,我最看不得别人迷茫!
❤️ 如果你觉得有帮助,希望爱学习的你不要吝啬三连击哟[点赞 + 收藏 + 评论]~
#帅蛋的面试空间##面试八股文##23届秋招##Python##python爬虫#还有小小公众号 【编程文青李狗蛋】,聊聊迷茫吹吹牛皮~