requests爬取数据的流程
指定url
发起请求
获取响应数据
持久化存储
-
聚焦爬虫
-
在持久化存储之前要进行数据解析
指定url
发起请求
获取响应数据
数据解析
持久化存储
python实现数据解析的方法
正则表达式
xpath解析
bs4解析
常用正表达式则
-
在python中使用正则表达式需要引入名为re的库``import re
-
限定符
?
?:?前面的字符可以出现零次或一次
*
*:*前面的字符可以出现零次或无数次
+
+:+前面的字符可以出现至少一次
{}
{}:{}内部可以为一个或二个参数
{n}:{n}前面的字符串固定为n个
{n,}:{n,}前面的字符串为n到无穷个
{m,n}:{m,n }前面的字符串为m到n个
()
():()括号内部的字符串作为一个整体
或运算符
|
|:i (love|like)
匹配i love或i like
字符
[ ]
[abc]由abc这几个字母构成
[a-d]由a-d这个范围里面的字母构成
[A-D]由A-D这个范围里面的字母构成
[0-9]代表数字
如果在[^]前面写一个^则代表:代表要求匹配除了^后面列出字符以外的字符
\d
\d代表数字与[0-9]一样
\D代表非数字
\w
\w代表数字字母下划线和中文
\W非单词字符
\s
\s所有的空白字符包括空格,制表符,tab字符,换页符……=[\f\n\r\t\v]
\S非空白字符
.
点(.)代表除了换行以外任意的字符
特殊字符
^与$
^匹配行首 ^a匹配行数的a
$匹配行尾 a$匹配行尾的a
贪婪与懒惰
贪婪匹配 .*
懒惰匹配 .*?
re.I:忽略大小写
re.M:多行匹配
re.G:全局搜索
re.S:单行匹配
re.sub(正则表达式,替换内容,字符串)
使用正则爬取图片
import requests
if __name__ == "__main__":
#如何爬取图片数据
url = 'https://dss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=1917437437,301204826&fm=26&gp=0.jpg'
#content返回的是二进制形式的图片数据
# text(字符串) content(二进制)json() (对象)
img_data = requests.get(url=url).content
with open('./鞠婧祎.jpg', 'wb') as fp:
fp.write(img_data)