关于爬虫你必须知道的20个知识点

1. 什么是爬虫?
爬虫是一种自动化程序,用来抓取互联网上的信息。

2. 爬虫的工作原理是什么?
爬虫主要通过发送HTTP请求和解析响应来工作。它会按一定的规则自动发送请求,获取响应,解析和提取数据。

3. Scrapy和Beautiful Soup的区别是什么?
Scrapy是一款爬虫框架,Beautiful Soup是一个HTML/XML解析库。Scrapy可以实现整个爬虫程序,Beautiful Soup通常只用于解析和提取数据。

4. 如何防止被网站屏蔽爬虫?
可以通过设置随机的User-Agent,使用代理IP,控制爬取速度等方法来避免被屏蔽。

5. 如何自定义UAS和REFERER头?
在Scrapy中可以通过DOWNLOADER_MIDDLEWARES设置自定义中间件来修改请求头。

6. 如何处理JavaScript动态渲染的页面?
可以使用工具如Selenium来渲染JavaScript并获取动态渲染后的HTML内容。

7. 如何处理验证码?
可以使用OCR技术来识别验证码,也可以自己收集验证码进行人工标注然后训练模型来识别。

8. 如何处理IP被封杀的情况?
可以使用代理IP进行轮换,也可以使用云代理服务。

9. Scrapy的Scheduler和Downloader中间件的作用是什么?
Scheduler负责管理爬取请求的队列和去重。Downloader中间件可以修改 Scrapy 下载器生成的请求及下载的响应。

10. Scrapy的Spider、Item Pipeline、Downloader Handler的作用是什么?
Spider负责解析响应及生成爬取 requests。Item Pipeline 负责处理爬取到的item。Downloader Handler 负责下载网页内容。

11. 如何在Scrapy项目中实现分布式爬虫?
可以使用Scrapy Redis等组件实现分布式调度,并使用多个爬虫进程来实现分布式爬取。

12. Scrapy的Robots.txt和RobotstxtMiddleware的作用是什么?
Robots.txt是网站定义的爬虫允许访问的规则。RobotstxtMiddleware是Scrapy的一个中间件,用来根据Robots.txt规则过滤请求。

13. Scrapy的CrawlSpider和Rule的作用是什么?
CrawlSpider是一种更高级的Spider,通过定义规则(Rule)来管理爬取请求的生成。

14. Scrapy的信号(Signals)的作用是什么?
信号可以用于在Scrapy内部的某个操作完成后触发其他操作。它实现了一个发布/订阅模式。

15. Scrapy的Feed exports的作用是什么?
Feed exports可以将爬取到的数据以XML,JSON或者CSV格式导出到文件中。

16. Scrapy调度器采用的算法是什么?URA和DA算法的区别是什么?
Scrapy调度器默认采用LIFO算法。LIFO是后进先出,URA是统一随机算法,DA是基于域名的算法。

17. Scrapy的避重机制是什么?
Scrapy的避重机制是基于请求的指纹(请求URL和其他信息)来实现的。如果两个请求的指纹相同,则认为它们是重复的。

18. Scrapy的广度优先和深度优先爬取算法的区别是什么?
广度优先会先爬取同一层级的全部网页,然后再进一步爬取下一层级的网页。深度优先会先爬取同一链路上的全部网页,然后再转到下一链路。

19. Scrapy如何实现增量抓取和断点续抓?
可以通过指定一个上次爬取记录的requestfingerprints.json文件来实现增量抓取。可以通过指定一个保存requests队列的Pkqueue pickle文件来实现断点续抓。

20. Selenium与PhantomJS在爬虫中的作用和区别是什么?
Selenium可以控制实际浏览器来渲染网页并爬取。PhantomJS是无界面的,可以达到和Selenium类似的效果但资源消耗更小。Selenium更适合爬取JavaScript渲染的网页,PhantomJS更轻量。

猜你喜欢

转载自blog.csdn.net/weixin_47964305/article/details/130816682