导图社区 网络爬虫
学习python的同学看这里!python爬虫主要知识点总结,根据北理工嵩天的“python网络爬虫与数据分析”MOOC课程总结而来,该课程获得国家精品在线开放课程认证,是一门优秀的python在线学习课程,本导图总结爬虫多个重要库的使用方法,并总结Scrapy爬虫框架主要结构,帮你快速掌握爬虫初级入门技术。
编辑于2020-02-17 11:22:54网络爬虫
BeautifulSoup
用来解析html和SML文档的库
导入
from bs4 import BeautifulSoup
soup = BeautifulSoup('<p>....</p>', 'html.parser')
遍历功能
平行遍历
.next_sibling(s)
.previous_sibling(s)
下行遍历
.children
.descendents
.contents
上行遍历
.parent
.parents
基本元素
Tag
Name
NavigableString
Attributes
comment
Requests库
常用方法
.request()
.put()
.get()
获取网页信息,最为常用
.head()
网页太大时获取资源概要
.post()
.delete()
.patch()
Robots协议
网络爬虫盗亦有道
/robots.txt
基本语法
# 注释
*代表所有
/代表注释
通用代码框架
try: r = requests.get(url, timeout=30) r.rase_for_status r.encodig=r.apparent_encoding return r.text except: print("爬取失败")
r.raise_for_status:如果响应状态码不是200 它将抛出错误,并被except捕获
RE
regex = re.compile()
方法
re.search()
re.amtch()
re.find_all()
re.split()
re.sub()
re.finditer()
语法
操作符 说明 实例 . 表示任何单个字符 [] 字符集,对单个字符给出取值范围 [abc]表示a, b, c, [a-z]表示a到z单个字符 [^] 非字符集,对单个字符给出排除范围 [^abc]表示非a或b或c的单个字符 * 前一个字符0次或者无限次扩增 abc*表示ab, abc, abcc, abccc等 + 前一个字符1次或者无限次扩增 abc+表示abc, abcc, abccc等 ? 前一个字符0次或1次扩增 abc?表示ab, abc | 左右表达式任意一个 abc|def表示abc, def {m} 扩展前一个字符m次 ab{2}c表示abbc {m,n} 扩展前一个字符m至n次(含n次) Ab{1,2}表示abc或abbc ^ 匹配字符串开头 ^abc表示abc且在一个字符串的开头 $ 匹配字符串结尾 abc$表示abc且在一个字符串的结尾 () 分组标记,内部只使用 | 操作符 (abc)表示abc, (abc|def)表示abc, def \d 数字,等价于[0-9] \w 单词字符,等价于[A-Za-z0-9]
实例
京东商品页面爬取
亚马逊商品的页面爬取
百度/360搜索关键字提交
网络图片的爬取和存储
IP地址归属地的自动查询
中国大学排名定向爬取
mastersportal相关专业对应的校名爬取
以爬虫视角看待网络
提取方法
beautifulsoup
.find_all(name, atts, recursive, string)
<tag>.(.....)等价于<tag>.find_all(.....)
Scrapy框架
Engine
Downloader
Spider
Scheduler
Item Pipelines
Downloader Middleware
Spider Middleware
信息标记
html
hyper text markup language
www(world wide web)的组织信息方式
超文本
将声音,图像, 视频嵌入到文本
XML
eXtensible Markup Language
与html类似
JSON
JavaScript Object Notation
有类型的键值对
YAML
YAML Ain't Markup Language
无类型的键值对