1. 什么是爬虫?
爬虫是一种自动化程序,用于大规模爬取网站的数据。
2. 为什么要学习爬虫?
爬虫可以快速抓取大量数据,用于数据分析、机器学习训练数据等。
3. 爬虫的基本组成是什么?
主要组成:URL管理器、网页下载器、网页解析器、数据存储器。
4. 了解HTTP协议及请求/响应过程?
HTTP用于浏览器和服务器间通信。请求/响应过程:客户端请求→服务器响应→客户端接收。
5. 会使用requests库发送HTTP请求?
可以像这样发送请求:
python import requests r = requests.get("http://www.example.com")
6. 会使用BeautifulSoup或xpath解析网页?
可以使用BeautifulSoup解析HTML,xpath解析XML。
7. 会使用代理池及User-Agent池?
代理池用来隐藏真实IP,UA池用于伪装客户端信息。
8. 了解爬虫的检测机制及反检测手段?
主要检测机制有请求频率限制、IP限制、机器指纹识别等。反检测手段有代理、UA池、时间间隔控制等。
9. 会使用MongoDB或MySQL存储爬取的数据?
可以选择云数据库服务,使用pymongo或pymysql库连接数据库。
10. 了解分布式爬虫的原理?
分布式爬虫使用多个节点协作爬取,节点之间通过消息队列通信,可以大幅提高爬取效率。
11. 爬虫代码的基本结构是什么?
基本结构:
python import 需要的库 url = '目标网页URL' # 获取网页内容 r = requests.get(url) html = r.text # 解析网页,获取需要的数据 soup = BeautifulSoup(html, 'lxml') ... # 保存数据 ...
12. 如何 finds() 获得标签内容?
可以像这样使用BeautifulSoup的 find() 和 finds() 方法:
python title = soup.find('title') # 找到第一个title标签 titles = soup.find_all('title') # 找到所有title标签
13. 如何用xpath解析网页?
可以这样使用xpath:
python from lxml import etree html = etree.HTML(text) result = html.xpath('//title/text()') # 获取所有title标签的文本
14. UA池和代理池怎么使用?
可以随机从UA/代理列表中选择一个UA/代理,更换请求头的User-Agent/proxies来使用。
15. 爬虫如何检测并防止被ban?
主要检测是否返回403状态码,可以使用代理池、UA池、调整请求频率等进行反检测。
16. 爬虫项目框架有哪些?
主流框架有Scrapy、Selenium、Beautiful Soup、requests等。
17. 分布式爬虫项目案例?
如分布式抓取亚马逊商品信息,使用kafka进行节点通信。
18. 爬虫存数据库操作流程?
使用pymongo/pymysql连接MongoDB/MySQL,在解析后直接插入或更新数据库集合和表格。
19. 爬虫常见的异常情况有哪些?
常见异常:连接超时、HTTP 403 状态码、页面4545结构变化、数据解析错误等。
20. 爬虫的合法性问题?
需要遵守robots协议,合理设置爬取频率,不要给网站服务器造成过大压力等。