一、基本概念
-
前端的概念
前端技术语言体系包括:- html:超文本标记语言(第一行就是声明)
- css:层叠样式表(渲染),简单理解为标签中的属性
- javascript/js:语言(e.g.点击——>处理)
-
爬虫工具和学习框架
- 爬静态网站
- requests 链接网站
- bs4 将网页变成结构化数据,方便爬
- 爬动态网站 js加载的
- chrome 开发者工具+requests
- selenium/ghost
- 其他
- 多线程爬虫
- 代理IP池
- scrapy pyspider 框架
二、HTML
常见标签含义:
<script type = ...> :javascript——是控制页面逻辑的,爬虫时候不用管
<body> 页面内容
<div class = '一部分css代码,理解为属性'>
一个标签:
<b class="boldest"> 加粗字体 </b>
- 加粗字体(诶在markdown里面也有效)
- b——name
- class——attribute,"boldest" 是class的取值
- 其他常见属性:href, style,id.title,tid等
元素的树形关系:
- 先辈、父、子、兄弟、后代
三、xpath
1.基础知识
/ 从根节点来选择元素
// 从匹配选择的当前节点来对文档中的因素进行选择
. 选取当前节点
.. 选择当前节点的父节点
@ 选择属性
例子:
body/div 选取属于body的子元素中的所有div元素
//div 选择所有div 标签的子元素,不管他们在文档中的位置
@lang 选取名称为lang的所有属性
2.常用通配符
* 匹配任何元素节点
@* 匹配任何属性节点
例子:
//* 选取所有元素
//title[@*] 选取所有"有属性的title元素"
| 代表的是“并集”的关系(通常表示“or”不太一样)
//body/div | //body/li 选取body下面所有 div和li 元素
四、beautifulSoap
requests+bs4 爬取大学排名表、学院官网会议、下厨房早餐
就是一个从html或者xml文件中提取数据的python库
-
获取某一个标签:
soup.head 获取html的文档头
soup.p 获取第一个p标签
soup.p.attrs 获取第一个p标签的属性 -
find_all获取所有指定标签
soup.find_all(id = xx) 获取所有id为xx的标签
soup.find_all('p') 获取所有p标签
soup.find_all('td', class_ = 'aa') 打印所有标签为aa的td标签——按照css来匹配 -
和正则表达式的组合使用
import re
正则表达式用法具体百度
<a class = "abc"> 生存分析 <a/>
<a class = "abc"> 多元回归 <a/>
re.findall(">(.{2,5})</a>", str(names)) 全文文字匹配出此格式
def ifseminar(href): 定义一个href属性的匹配函数
return href and re.compile("seminar\?id=+\d{4}").search(href)
soup.find_all(href = ifseminar) 找到所有href属性满足条件的标签
get_text("|", strip=True) 删除空白换行等,用|作为分隔符