python 爬虫汇总篇

一、基本概念

  1. 前端的概念
    前端技术语言体系包括:

    • html:超文本标记语言(第一行就是声明)
    • css:层叠样式表(渲染),简单理解为标签中的属性
    • javascript/js:语言(e.g.点击——>处理)
  2. 爬虫工具和学习框架

  • 爬静态网站
    • 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

京东商品爬取案例——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库

  1. 获取某一个标签:
    soup.head 获取html的文档头
    soup.p 获取第一个p标签
    soup.p.attrs 获取第一个p标签的属性

  2. find_all获取所有指定标签
    soup.find_all(id = xx) 获取所有id为xx的标签
    soup.find_all('p') 获取所有p标签
    soup.find_all('td', class_ = 'aa') 打印所有标签为aa的td标签——按照css来匹配

  3. 和正则表达式的组合使用
    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)          删除空白换行等,用|作为分隔符