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 ...
随机推荐
- ZYNQ EMIO使用及可重用封装
为了快速实现算法板级验证,PC端需要通过JTAG或以太网与FPGA形成通路.最简单便捷的方案是利用协议栈芯片,用户可以无视底层,利用简单的SPI协议读写寄存器实现复杂的TCP UDP等网络协议.当然带 ...
- (转载)最完整的自动化测试流程:Python编写执行测试用例及定时自动发送最新测试报告邮件
今天笔者就要归纳总结下一整套测试流程,从无到有,实现零突破,包括如何编写测试用例,定时执行测试用例,查找最新生成的测试报告文件,自动发送最新测试报告邮件,一整套完整的测试流程.以后各位只要着重如何编写 ...
- ipa企业签名
包天包周包月季度包年套餐_app/ios应用企业签名_ios企业签名 常见问题 需要提供 App 的源码吗? 不需要源码,只发 ipa 或者 app 格式的安装包即可. 客户怎么安装签名好的软件? 安 ...
- 上传本地文件到GitHub上
问题解决 今天在windows上上传本地文件到github,出现用户名和仓库不匹配的情况,解决方式如下: 打开控制面板,选择用户账户 把该删除的账户删除一下就行了. 上传文件的步骤如下: 将上传的文件 ...
- kernel笔记——进程调度
调度器完成以下任务: 时钟中断(或类似的定时器)时间内刷新进程的时间片,设置进程调度标志 系统调用返回或中断完成时检查调度标志 schedule函数 内核代码中完成进程调度的函数为schedule() ...
- Nginx 的 access log 如何以 json 形式记录?
Nginx 的 access log 默认是以空格分隔的字符串形式记录的,格式如下 log_format proxy '[$time_local] $remote_addr ' '$protocol ...
- vue 在safari动态多级面包屑导航样式不刷新的bug
前言: 最近做公司的管理系统,用到了elementUI 里面的 bread面包屑组件,本来一切好好的,谁知道mac的safari样式全部缓存了,硬是下面这种效果,真头疼 而chrome,QQ均显示正常 ...
- JavaScript面向对象—基本数据类型和引用数据类型的区别和变量及作用域(函数和变量)
基本类型和引用类型的值 ECMAScript 变量可能包含两种不同的数据类型的值:基本类型值和引用类型值. 基本类型值指的是那些保存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置. 而引用 ...
- excel poi导出demo
最近做了一个excel 导出的demo,是抄写老大的(嘻嘻嘻),现在把demo源码放在这里 链接:https://pan.baidu.com/s/1_xj0hej-1xwX5JF39acEOg 提取码 ...
- Android图片选择---MultiImageSelector的使用
Github地址:https://github.com/lovetuzitong/MultiImageSelector MultiImageSelector主要是图片选择功能. AndroidStud ...