03-python进阶-爬虫入门-正则
【urllib and urllib2】
这是两个python的网络模块 内置的 提供很好的网络访问的功能。
- #!coding:utf-8
- import urllib2
- res = urllib2.urlopen('http://www.baidu.com')
- html = res.read()
- print(html)
如果我们想要去爬一些图片可以这样干
- #!/usr/bin/env python
- #conding:utf-8
- import urllib , urllib2
- url = "https://www.douban.com/doulist/121326/"
- header = {'User-Agent':'moto x'}
- req = urllib2.Request(url,headers = header)
- response = urllib2.urlopen(req)
- data = response.read()
- import re
- #print data
- p =re.compile(ur'<img.+src="(.*?)"')
- matches = re.findall(p,data)
- print matches
- for m in matches:
- with file(m.split('/')[-1],'w') as f:
- f.write(urllib2.urlopen(m).read())
可以把豆瓣某个电影页面的封面都爬下来 并且以文件名的形式保存下来
【正则表达式】
在python中想要用正则表达式就必须要要用re模块
<html><body><h1>hello world<h1></body></html>
比如我们想从这里提取helloword
- #coding:utf-8
- import re
- key = r"<html><body><h1>hello world<h1></body></html>"
- p1 = r"<h1>.+<h1>"
- pattern1 = re.compile(p1)
- print pattern1.findall(key)
首先我们知道 . 代表的任意单个字符 而且 + 呢 则代表的是 前面的模拟出现任意次
那么如果我们想就想匹配 .
比如我们要匹配 213d3421a.qq.com123123
里面的a.qq.com
- key = r"213d3421a.qq.com123123"
- p1 = r"a.\qq.\com"
- pattern1 = re.compile(p1)
- print pattern1.findall(key)
我们通过 ‘\’ 来转义 将 【. 】 从任意单个字符转义成它原本的意思
个人理解:我们在学习正则表达式的时候 应该把正则表达式分成 表达式语句 和 修饰语句 两部分来看 这样就会容易很多
就比方我们看过的例子
- #coding:utf-8
- import re
- key = r"<html><body><h1>hello world<h1></body></html>"
- p1 = r"<h1>.+<h1>"
- pattern1 = re.compile(p1)
- print pattern1.findall(key)
我们可以理解为 . 就是代表表达式 而+ 代表的是修饰符 .代表的任意单个字符 而+则是出现任意此 那么.+的意思就是任意字符出现任意次
- #conding:utf-8
- import re
- key = r"abb adb abbb a abcd"
- p1 = r"ab*"
- pattern1 = re.compile(p1)
- print pattern1.findall(key)
我们看这段代码 能匹配到那些呢
*代表的是他前面的字符出现任意次 那么 这里的表达式就是*前面的字符 而修饰语言就是*
这里能被匹配道的是
['abb', 'a', 'abbb', 'a', 'ab']
03-python进阶-爬虫入门-正则的更多相关文章
- Python简单爬虫入门二
接着上一次爬虫我们继续研究BeautifulSoup Python简单爬虫入门一 上一次我们爬虫我们已经成功的爬下了网页的源代码,那么这一次我们将继续来写怎么抓去具体想要的元素 首先回顾以下我们Bea ...
- GJM : Python简单爬虫入门(二) [转载]
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- Python简单爬虫入门三
我们继续研究BeautifulSoup分类打印输出 Python简单爬虫入门一 Python简单爬虫入门二 前两部主要讲述我们如何用BeautifulSoup怎去抓取网页信息以及获取相应的图片标题等信 ...
- python网络爬虫入门范例
python网络爬虫入门范例 Windows用户建议安装anaconda,因为有些套件难以安装. 安装使用pip install * 找出所有含有特定标签的HTML元素 找出含有特定CSS属性的元素 ...
- python网络爬虫入门(二)
刚去看了一下,18年2月份写了第一篇关于爬虫的文章(仅仅介绍了使用requests库去获取HTML代码),一年多之后看来很稚嫩也没有多少参考的意义,但没想着要去修改它,留着也是一个回忆吧.至少证明着我 ...
- Python网络爬虫入门篇
1. 预备知识 学习者需要预先掌握Python的数字类型.字符串类型.分支.循环.函数.列表类型.字典类型.文件和第三方库使用等概念和编程方法. 2. Python爬虫基本流程 a. 发送请求 使用 ...
- Python网络爬虫入门实战(爬取最近7天的天气以及最高/最低气温)
_ 前言 本文文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Bo_wen 最近两天学习了一下python,并自己写了一个 ...
- Python学习 —— 爬虫入门 - 爬取Pixiv每日排行中的图片
更新于 2019-01-30 16:30:55 我另外写了一个面向 pixiv 的库:pixiver 支持通过作品 ID 获取相关信息.下载等,支持通过日期浏览各种排行榜(包括R-18),支持通过 p ...
- python网络爬虫-入门(二)
为什么要学网络爬虫 可以替代人工从网页中找到数据并复制粘贴到excel中,这种重复性的工作不仅浪费时间还一不留神还会出错----解决无法自动化和无法实时获取数据 对于这些公开数据的应用价值,我 ...
随机推荐
- Hive的HQL(2)
Hive基础(1) Hive的HQL(2) 1. HQL的数据定义,HQL是一种SQL方言,支持绝大部分SQL-92标准.但是和SQL的差异为:不支持行级别的操作,不支持事务等.HQL的语法接近于My ...
- Mac版 Slickedit 2013 v18.0.3.3 破解
今天在Windows机器上面,无调试器的情况下,把 Mac系统下的Slickedit给破解了并测试通过. 原始安装包下载: Mac Slickedit 2013 (v18.0.3.3) 破解文件下载地 ...
- Java-Web总结03
*1 dom4j解析器 1)CRUD的含义:CreateReadUpdateDelete增删查改 2)XML解析器有二类,分别是DOM和SAX. a)DOM一次性将整个XML文件读到内存,形成 ...
- UVA225 Golygons 黄金图形(dfs+回溯)
剪枝1:在同一个维度上的点具有相同的奇偶性,如果奇数数量只有奇数个那么一定不能返回原点. 剪枝2:当前位置怎么也走不回去. 3:沿途判断障碍即可. 在oj上提交0.347s,最快的0.012s,应该有 ...
- kubernetes-深入理解pod对象(七)
Pod中如何管理多个容器 Pod中可以同时运行多个进程(作为容器运行)协同工作.同一个Pod中的容器会自动的分配到同一个 node 上.同一个Pod中的容器共享资源.网络环境和依赖,它们总是被同时调度 ...
- C++容器类-list
C++ 表(List容器类) 一.概念 头文件:#include <list> 又叫链表,是一种双线性链表,只能顺序访问(从前往后或从后往前) 他不支持随机访问. 二.方法 #includ ...
- Python re module (regular expressions)
regular expressions (RE) 简介 re模块是python中处理正在表达式的一个模块 r"""Support for regular expressi ...
- java基础——接口与抽象类的区别
(1)首先接口和抽象类的设计目的就是不一样的.接口是对动作的抽象,而抽象类是对根源的抽象. (2)对于抽象类,一个类只能继承一个抽象类.但是一个类可以同时实现多个接口. (3)接口是公开的,里面不能有 ...
- SQL Server数据库字段类型说明
SQL Server数据库字段类型说明 目前Sql Server 数据库一共有X个字段类型,大体分为9类,分别是字符串类型.二进制码字符串数据类型.Unincode字符串数据.整数类型.精确数据类型. ...
- untiy3d action管理机制的编写
使用unity3d对于一些可视化强迫者来说,是一个不错的选择,但unity3d没有cocos2d的action管理机制,比如cocos2dx的CCMoveTo,CCScale等action,所以笔者通 ...