快速构建爬虫领域的整体认知
思维导图如下:
1、爬虫的本质
- 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。
2、爬虫的基本流程
- 发起请求
- 获取响应的内容
- 解析内容
- 保存数据
3、关于数据的处理
- Xpath
- BeautifulSoup
4、Urllib库/Requests库
- python内置的HTTP请求库
import urllib.request
response = urllib.request.urlopen('http://www.baidu.com')
print(response.read().decode('utf-8'))
- 有很多网站为了防止程序爬虫爬网站造成网站瘫痪,会需要携带一些headers头部信息才能访问
import requests
from lxml import etree
import sqlite3
url = "http://price.sci99.com/index.aspx?pagename=energy&RequestId=fc5e0db5e4c5683c"
headers = {
"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36",
}
resp = requests.get(url,headers=headers)
text = resp.text
html = etree.HTML(text)
5、BeautifulSoup库的使用
- 一个灵活又方便的网页解析库,处理高效,支持多种解析器。
6、selenium库
-
selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。
-
安装chromedriver
-
各种api的使用
7、实战爬取数据demo
8、爬虫的策略
在爬虫系统中,待抓取URL队列是很重要的一部分,待抓取URL队列中的URL以什么样的顺序排队列也是一个很重要的问题,因为这涉及到先抓取哪个页面,后抓取哪个页面。而决定这些URL排列顺序的方法,叫做抓取策略。
- 深度优先
- 广度优先
9、爬虫的性能相关
- 传统方式:简单的循环串行(for循环)
- 进阶:引入线程池