Python爬虫之一
1. 爬虫的选取:scrapy和requests+beautifuisoup
scrapy是框架,而requests和beautifulsoup是库。scrapy框架是可以加如requests和beautifulsoup库的,而scrapy是基于twisted,性能是最大的优势。scrapy方便扩展,提供很多内置的功能。scrapy内置的css和xpath selector非常方便,beautifulsoup就是有点慢。
2.常见网页分类
静态网页,动态网页、webservice
3.爬虫能做什么
1)搜索引擎---百度、google、垂直领域搜索引擎
2)推荐引擎---今日头条
3)机器学习的数据样本
4)数据分析(如金融数据分析)、舆情分析等
4.正则表达式
1)特殊字符(^)
代码:
import re
"""
1)^"必须是^后面的字符"
2) .是除了\n的任意字符
3) *是一个限定符,用来修饰前一个字符或分组,限定匹配重复的数量为任意数量。
"""
#”^“、”.“、”ד测试
test_str = "zzbaby"
reg_str = "^b.*"
if re.match(reg_str,test_str):
print("yes")
else:
print("no")
结果:
no
2)特殊字符($)
代码:
"""
1)$"表示必须有以$前面的字符结尾"
"""
reg_str_1 = ".*y$"
if re.match(reg_str_1,test_str):
print("yes")
else:
print("no")
结果:
yes
3)特殊字符(?)
代码:
"""
1)?表示非贪婪模式
"""
test_str = "zbbbbbbzzbaby"
reg_str_2 = ".*?(z.*?z).*"#?表示从左边开始匹配遇到第一个Z就开始进入匹配第二个?表示不要贪婪太多只需要匹配遇到第二个z就结束
if re.match(reg_str_2,test_str):
print(re.match(reg_str_2,test_str).group(1))#表示提取第一次符合reg_str_2的字符,正则表达式是反向匹配的
else:
print("error")
结果:
zbbbbbbz
4)特殊字符+
代码:
"""
1)+是一个限定符,用来修饰前一个字符或分组,限定匹配重复的数量至少为一次数量。
"""
reg_str_3 = "(.+.*)"#正则表达式默认是贪婪模式
if re.match(reg_str_3,test_str):
print(re.match(reg_str_3,test_str).group(1))#表示提取第一次符合reg_str_2的字符,正则表达式是反向匹配的
else:
print("error")
结果:
zbbbbbbzzbaby
5)特殊字符{}
代码:
"""
1){2}表示大括号里面出现的数字是前面出现的次数
2){2,}表示大括号数值以上的次数
3){2,5}表示2次以上5次以下 """
reg_str_4 ="(.{2}.)"#表示出现前两个字符
reg_str_5= "(.+b{2,})"#表示b前面要至少有一个字符后匹配2个以上的b
reg_str_6= "(.+b{1,6})"#表示b前面要至少有一个字符后匹配1个以上的b,6个以下的b
print(re.match(reg_str_4,test_str).group(1))#表示打印前两个字符
print(re.match(reg_str_5,test_str).group(1))#表示两次以上的字符,由于贪婪所以会打印最长
print(re.match(reg_str_6,test_str).group(1))#打印的是在b之前至少存在1个字符而且b出现的次数在1次以上6次以下
结果:
zbb
zbbbbbb
zbbbbbb
6)特殊字符|
代码:
"""
1)表示或者的意思
"""
reg_str_7 = "(zz|zb)"#提取zz或者zb优先左边打印
print(re.match(reg_str_7,test_str).group(1))#group中的数字代表的是括号的层数,常常用于提取子字符串 结果:
zb
7)特殊字符[]
代码:
"""
1)[]相当于只能输入[]中的字符
2)[]有一种使用方法[0-9]只能输入0-9之间的数据
3)[]还有一种使用方法[^1]表示只能输入不是1的数据
"""
#[]的前一种使用方式
print("请输入一个电话号码:")
#test_str = input()
reg_str_1 ="1[3578][0-9]{9}"#表示第二位只能输入3、5、8、7的数值,[0-9]则表示输入1-9之间的数据
if re.match(reg_str_1,test_str):
print(test_str)
else:
print("error")
#[^]的使用方法
print("输入一个最后不为1的电话号码:")
test_str = input()
reg_str_1 ="1[3578][0-9]{8}[^1]{1}"#表示第二位只能输入3、5、8、7的数值,[0-9]则表示输入1-9之间的数据,最后一位不能为1
if re.match(reg_str_1,test_str):
print(test_str)
else:
print("error")
输出:
请输入一个电话号码:
error
输入一个最后不为1的电话号码:
15837140221
error
8)特殊字符\s
代码:
"""
1)\s表示匹配一个空格
2)\S表示只要不是空格都可以
3)\w表示任意一个字符都可以[A-Za-z0-9_]都可以
4)\W表示与\w相反
"""
#\s的作用
test_str ="你 好"#汉字
test_str_1 ="hh aa"#英文
reg_str_8 ="你\s好"
reg_str_9 = "hh\saa"
if re.match(reg_str_8,test_str):
print(test_str)
if re.match(reg_str_9,test_str_1):
print(test_str_1)
else:
print("error")
#\S的作用与\s的作用相反
test_str ="hhsaa"#英文
reg_str_10 = "hh\Saa"
if re.match(reg_str_10,test_str):
print(test_str)
else:
print("error")
#\w的使用方式
test_str ="hh@aa"#英文
reg_str_11 = "hh\waa"#\w相当于[a-zA-Z0-9_]
if re.match(reg_str_11,test_str):
print(test_str)
else:
print("error")
#\W的使用方式与\W相反
test_str ="hh@aa"#英文
reg_str_12 = "hh\Waa"#\W相当于[a-zA-Z0-9_]相反
if re.match(reg_str_12,test_str):
print(test_str)
else:
print("error")
输出结果:
你 好
hh aa
hhsaa
error
hh@aa
9)特殊字符[\u4E00-\9FA5]
代码:
"""
1)[\u4E00-\u9FA5]只识别汉字
"""
test_str ="你好"#汉字
reg_str_13 = "[\u4E00-\u9FA5]+"
if re.match(reg_str_13,test_str):
print(test_str)
else:
print("error")
运行结果:
你好
10)特殊字符\d
代码:
"""
1)\d代表的数字
"""
test_str = "aaaaaa123"
reg_str_13 = ".*(.+[2]\d).*"#提起123
if re.match(reg_str_13,test_str):
print(re.match(reg_str_13,test_str).group(1))
else:
print("error")
结果:
123
Python爬虫之一的更多相关文章
- Python 爬虫模拟登陆知乎
在之前写过一篇使用python爬虫爬取电影天堂资源的博客,重点是如何解析页面和提高爬虫的效率.由于电影天堂上的资源获取权限是所有人都一样的,所以不需要进行登录验证操作,写完那篇文章后又花了些时间研究了 ...
- python爬虫成长之路(一):抓取证券之星的股票数据
获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇使用的版本为python3.5,意在抓取证券之星上当天所 ...
- python爬虫学习(7) —— 爬取你的AC代码
上一篇文章中,我们介绍了python爬虫利器--requests,并且拿HDU做了小测试. 这篇文章,我们来爬取一下自己AC的代码. 1 确定ac代码对应的页面 如下图所示,我们一般情况可以通过该顺序 ...
- python爬虫学习(6) —— 神器 Requests
Requests 是使用 Apache2 Licensed 许可证的 HTTP 库.用 Python 编写,真正的为人类着想. Python 标准库中的 urllib2 模块提供了你所需要的大多数 H ...
- 批量下载小说网站上的小说(python爬虫)
随便说点什么 因为在学python,所有自然而然的就掉进了爬虫这个坑里,好吧,主要是因为我觉得爬虫比较酷,才入坑的. 想想看,你可以批量自动的采集互联网上海量的资料数据,是多么令人激动啊! 所以我就被 ...
- python 爬虫(二)
python 爬虫 Advanced HTML Parsing 1. 通过属性查找标签:基本上在每一个网站上都有stylesheets,针对于不同的标签会有不同的css类于之向对应在我们看到的标签可能 ...
- Python 爬虫1——爬虫简述
Python除了可以用来开发Python Web之后,其实还可以用来编写一些爬虫小工具,可能还有人不知道什么是爬虫的. 一.爬虫的定义: 爬虫——网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区 ...
- Python爬虫入门一之综述
大家好哈,最近博主在学习Python,学习期间也遇到一些问题,获得了一些经验,在此将自己的学习系统地整理下来,如果大家有兴趣学习爬虫的话,可以将这些文章作为参考,也欢迎大家一共分享学习经验. Pyth ...
- [python]爬虫学习(一)
要学习Python爬虫,我们要学习的共有以下几点(python2): Python基础知识 Python中urllib和urllib2库的用法 Python正则表达式 Python爬虫框架Scrapy ...
- python爬虫学习(1) —— 从urllib说起
0. 前言 如果你从来没有接触过爬虫,刚开始的时候可能会有些许吃力 因为我不会从头到尾把所有知识点都说一遍,很多文章主要是记录我自己写的一些爬虫 所以建议先学习一下cuiqingcai大神的 Pyth ...
随机推荐
- Docker 创建 Confluence6.12.2 中文版
目录 目录 1.介绍 1.1.什么是Confluence? 2.Confluence的官网在哪里? 3.如何下载安装? 4.对 Confluence 进行配置 4.1.设置 Confluence 4. ...
- dynalist 配额
2018-8-29 dynalist 配额 提示有一个G的配额 就是使用的流量用光了.仅有1个G
- 二、Windows Server 2016 AD 组织单位、组、用户的创建
简介: 组织单位简称OU,OU是(Organizational Unit)的缩写,组织单位是可以将用户.组.计算机和组织单位放入其中的容器.是可以指派组策略设置或委派管理权限的最小作用域或单元. 建立 ...
- 简单用数组模拟顺序栈(c++)
**栈是一种操作受限制的线性表,太多官方的话我也不说了,我们都知道栈元素是先进后出的,它有两种存储结构,分别是顺序存储结构和链式存储结构. **今天我先记一下顺序存储结构,后面我会加上链式存储结构的. ...
- Linux定是调用shell脚本删除文件
编写脚本 vi delbak.sh 代码如下: #!/bin/sh location="/home/mysql/backup/" find $location -mtime +7 ...
- kunbernetes-快速入门
1.入门概述 本文以在容器云上部署一个nexus3应用为例,通过通过一步步的操作,帮助用户快速的对Kubernetes有一个快速和整体的认识.通过快速入门,可以提供如下知识内容: 在集群中部署一个容器 ...
- RPC是什么?
初学微服务,一点会问RPC是什么,通常网上的资料会说,是一种协议,然后说得很复杂,一堆概念,拜托,我只是想知道RPC是什么,而不是 怎么实现怎么做. RPC就是想实现函数调用模式的网络化,A服务(微 ...
- day01(计算机组成,进制,内存分布,操作系统)
本周内容: 第一天: 计算机原理 操作系统 第二天: 编程语言 python入门:环境 - 编辑器 变量 基本数据类型 学习方法: 鸡汤 - 干货 wwwh : what | why | where ...
- Daily Scrum 12.20
Member Task on 12.20 Task on 12.21 仇栋民 继续Task972 : 完成活动评分基础功能 完成Task972 : 完成活动评分基础功能 康家华 完成 Task1010 ...
- c# pda
1.去除标题栏 FormBorderStyle属性设置为none 2.去除任务栏 [System.Runtime.InteropServices.DllImport("coredll.dll ...