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 ...
随机推荐
- NFS 安装与配置
NFS通常用于网络中的多台计算机实现共享存储. 由于测试环境没有购买阿里云的NFS,所以自己搭建一个NFS文件系统,实现一些比如上传图片,静态资源等同享功能. 下面的测试是在CentOS releas ...
- Axure RP 8 注册码
升级了8.1.0.3377版本后,需要使用下面这组注册码 许可:zdfans.com 重点:gP5uuK2gH + iIVO3YFZwoKyxAdHpXRGNnZWN8Obntqv7 ++ FF3pA ...
- Spring MVC 响应视图(六)
完整的项目案例: springmvc.zip 目录 实例 除了依赖spring-webmvc还需要依赖jackson-databind(用于转换json数据格式) <dependency> ...
- 各种文件用JS转Base64之后的data类型
1.txt data:text/plain;base64, 2.doc data:application/msword;base64, 3.docx data:applicat ...
- python之生成随机密码
https://www.cnblogs.com/evablogs/p/7096583.html 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #!/usr/bin/py ...
- Win7 64位下安装64bit MS SQL Server2005时安装不了Reporting Services的处理办法
警告截图: 解决办法: 在cmd窗口运行如下脚本即可: "cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/A ...
- Python简介之探观止矣
Python是一门什么样的编程语言编程语言主要分为编译型和解释型,静态语言和动态语言,强类型和弱类型,混合语言等.编译型语言:通过编译器把源代码编译(compile)成机器语言,在经过链接(linke ...
- An Overview of End-to-End Exactly-Once Processing in Apache Flink (with Apache Kafka, too!)
01 Mar 2018 Piotr Nowojski (@PiotrNowojski) & Mike Winters (@wints) This post is an adaptation o ...
- SQL MAX() 函数
MAX() 函数 MAX 函数返回一列中的最大值.NULL 值不包括在计算中. SQL MAX() 语法 SELECT MAX(column_name) FROM table_name 注释:MIN ...
- 小程序第三方框架对比 ( wepy / mpvue / taro )(转)
文章转自 https://www.cnblogs.com/Smiled/p/9806781.html 众所周知如今市面上端的形态多种多样,手机Web.ReactNative.微信小程序, 支付宝小程 ...