爬虫前置知识与初体验

爬虫数据采集分类

  1. 按采集对象分类
    1. 全网采集
    2. 全站采集
    3. 具体网站的制定数据采集
  2. 采集方案分类
    1. 利用http协议采集——页面分析
    2. 利用api接口采集——app数据采集
    3. 利用目标网站的api采集——微博、github等

Requests: 让 HTTP 服务人类

官网:https://requests.readthedocs.io/zh_CN/latest/

Requests 是一个 Python 的 HTTP 客户端库。可以用 Python 进行 get、post、head 等 HTTP 方法。例如:

>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
u'{"type":"User"...'
>>> r.json()
{u'private_gists': 419, u'total_private_repos': 77, ...}

 正则表达式

通过某种规则对字符串提取,对规则的编写就是编写正则表达式。

  • .      匹配任意字符(不包括换行符)
  • ^     匹配开始位置,多行模式下匹配每一行的开始
  • $      匹配结束位置,多行模式下匹配每一行的结束
  • *       匹配前一个元字符0到多次
  • +      匹配前一个元字符1到多次
  • ?      匹配前一个元字符0到1次
  • {m, n}      匹配前一个元字符 m 到 n 次
  • \\     转义字符
  • [ ]     字符集,可匹配其中任意一个字符
  • |     逻辑表达式,如 a | b 可表示匹配 a 或者 b
  • \b     匹配位于单词开始或结束位置的空字符串
  • \B     匹配不位于单词开始或结束位置的空字符串
  • \d     匹配一个数字,相当于 [0-9]
  • \D     匹配非数字,相当于 [^0-9]
  • \s     匹配任意空白字符
  • \S     匹配非空白字符
  • \w     匹配数字、字母、下划线中任意一个字符,相当与 [a-zA-Z0-9]
  • \W     匹配非数字、字母、下划线中的任意字符,相当与 [a-zA-Z0-9]

正则表达式 Python 接口

import re
info = "姓名:lucky 生日:1998年12月16日 本科:2017年9月1日"
print(re.search("生日.*\d{4}", info).group())
print(re.match(".*生日.*?\d{4}""", info).group())
生日:1998年12月16日 本科:2017
姓名:lucky 生日:1998

BeautifulSoup4

官网:https://www.crummy.com/software/BeautifulSoup/

Beautiful Soup 是 python 的一个库,最主要的功能是从网页抓取数据

Beautiful Soup 提供一些简单的、python 式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。 Beautiful Soup 自动将输入文档转换为 Unicode 编码,输出文档转换为 utf-8 编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup 就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。 Beautiful Soup 已成为和 lxml、html6lib 一样出色的 python 解释器,为用户灵活地提供不同的解析策略或强劲的速度。

xpath

简介

  • xpath 使用路径表达式在 xml 和 html 中进行导航
  • xpath 包含标准函数库
  • xpath 是一个 w3c 的标准

语法

  CSS选择器

猜你喜欢

转载自blog.csdn.net/weixin_41960890/article/details/114446116