Python 爬虫_正则表达式

用来对字符串操作的一种逻辑方式, 对字符串的一种过滤逻辑。
表达式全集: http://tool.oschina.net/uploads/apidocs/jquery/regexp.html

1.

1. re.match ==>尝试从字符串的起始位置匹配一个模式,如果第一个字符不嫩匹配,则不能正常匹配
        re.match(pattern,sring,flags=0)

2. 匹配目标:

import re
        content=‘Hello 1234567 world_this is a regex demo‘
        result=re.match(‘^Hello\s(\d+)\sworld.*demo$‘,content)    #正则表达式
        print(result.group(1))    #输出第一个括号的内容
        print(result.span())     #输出输出字符串的数量

3. 贪婪匹配:

import re
        content=‘Hello 1234567 world_this is a regex demo‘
        result=re.match(‘^He.*(\d+)\sworld.*demo$‘,content)
        print(result.group(1))    #只能输出7
#非贪婪匹配
        import re
        content=‘Hello 1234567 world_this is a regex demo‘
        result=re.match(‘^He.*?(\d+).*demo$‘,content)
        print(result.group(1))     #输出1234567
#匹配模式:
        import re
        content=‘‘‘Hello 1234567 world_this
        is a regex demo
        ‘‘‘
        result=re.match(‘^He.*?(\d+).*?demo$‘,content,re.s)    #re.s 是匹配换行符的
        print(result.group(1))    #输出1234567

4. 转义: 特殊字符需要转义

import re
        content=‘price is $500‘
        result=re.match(‘price is \$500\‘,content)     #转义之后才能匹配

5. re.search: 扫描字符串,返回第一个匹配的字符,能用search就不用match

import re
        content=‘Hello 1234567 world_this is a regex demo‘
        result=re.search(‘Hello\s(\d+)\sworld.*demo$‘,content)     #输出全部字符串

6. re.findall

results=re.findall(‘正则表达式‘,html,re.S)
        for result in results:
        print(result)
        print(result[1],result[2]...)

7. re.sub: 字符串替换

import re
        content=‘Hello 1234567 world_this is a regex demo extra stings‘
        content=re.sub(‘\d+‘,‘‘,content)

8. re.compile: 把字符串编译成正则表达式

import re
        content=‘‘‘Hello 1234567 world_this
        is a regex demo
        ‘‘‘
        result=re.compile(‘hello.*demo‘,re.s)    #re.s 是匹配换行符的
        result=re.match(pattern,content)
#实战练习:
        import requests
        import re
        content=requests.get(‘http://book.doubancom/‘).text
        patten=re.compile(‘<li,*cover.*?href="(.*?)".*?title="(.*?)".*?more-meta.*?author>(.*?)</span>.*?year>(.*?)</span>.*?</li>‘,re.S)
        results=re.findall(pattern.content)
        #print (results)
        for result in results
            url, name,author,date=result
            author=re.sub(‘\s‘,‘‘,author)
            date=re.sub(‘\s‘,‘‘,date)
            print(url,name,author,date)

原文地址:https://www.cnblogs.com/spencersun/p/9577411.html

时间: 2024-10-20 08:07:25

Python 爬虫_正则表达式的相关文章

Python爬虫运用正则表达式

我看到最近几部电影很火,查了一下猫眼电影上的数据,发现还有个榜单,里面有各种经典和热映电影的排行榜,然后我觉得电影封面图还挺好看的,想着一张一张下载真是费时费力,于是突发奇想,好像可以用一下最近学的东西实现我的需求,学习了正则表达式之后,想着要感受一下它在爬虫里面的效果和优缺点. 目标:爬取Top100榜单上电影的封面图 Top100榜单规则:将猫眼电影库中的经典影片,按照评分和评分人数从高到低综合排序取前100名,每天上午10点更新.相关数据来源于“猫眼电影库”. 下面是我做的步骤: (1)查

python爬虫_入门

本来觉得没什么可写的,因为网上这玩意一搜一大把,不过爬虫毕竟是python的一个大亮点,不说说感觉对不起这玩意基础点来说,python2写爬虫重点需要两个模块,urllib和urllib2,其实还有re先介绍下模块的一些常用功能urllib.urlopen('http://xxx.xxx.xxx') #打开一个网址,只是打开,和open差不多urllib2.Request(url) #解析网址,这个可以省略,具体不是很懂,一些功能,比如加head头什么的也需要使用这个urllib.urlretr

python爬虫_入门_翻页

写出来的爬虫,肯定不能只在一个页面爬,只要要爬几个页面,甚至一个网站,这时候就需要用到翻页了 其实翻页很简单,还是这个页面http://bbs.fengniao.com/forum/10384633.html,话说我得给这个人增加了多大的访问量啊...... 10384633重点关注下这个数字,这个就是页面的名称,现在尝试把这个数字+/-1看看有没有结果 验证http://bbs.fengniao.com/forum/10384634.html 可以看到,这个页面是可以访问的 再试试http:/

python爬虫:正则表达式

符号: . : 匹配任意字符(类似占位符,多少个.就表示多少个字符),换行符除外(与re.S相反) *:匹配前面一个字符0次或无限次 ?:匹配前面一个字符0次或1次 组合: .* : 贪心算法 一次匹配尽多 .*? :非贪心算法 匹配少量多次 () :括号内的数据作为返回结果 (.*?) :需要查找的内容   最常用 方法: findall : 匹配所有符合规律的内容,返回包含结果的列表: Search: 匹配并提取第一个符合规律的内容,返回一个正则表达式的对象(object) Sub:替换复合

python爬虫_某桌面壁纸网站所有图片

#! /usr/bin/env python #coding=utf-8# by chuxing 2014/10/1# qq:121866673 from os.path import dirname, abspath from extract import extract,extract_all import urllib2 # 抓取搜索页面 mainurl = 'http://desk.**.com.cn' hosturl = 'http://desk.**.com.cn/pc/' '''

Python爬虫_用Python爬取csdn页面信息目录

1.原理: 这个程序可以实现批量获取到某一个CSDN博客的个人信息.目录与链接的对应,并存到一个本目录的mulu.txt文件中 2.具体代码: # -*- coding: cp936 -*- import urllib.request# import re# import sys# import time# import random import string headers = {# 'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1;

python爬虫之正则表达式

一.简介 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符串来描述.匹配一系列匹配某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些匹配某个模式的文本. compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象.该对象拥有一系列方法用于正则表达式匹配和替换. 二.使用方法 1.简单看一下

Python爬虫(十一)_案例:使用正则表达式的爬虫

本章将结合先前所学的爬虫和正则表达式知识,做一个简单的爬虫案例,更多内容请参考:Python学习指南 现在拥有了正则表达式这把神兵利器,我们就可以进行对爬取到的全部网页源代码进行筛选了. 下面我们一起尝试一下爬取内涵段子网站: http://www.neihan8.com/article/list_5_1.html 打开之后,不难看出里面一个一个非常有内涵的段子,当你进行翻页的时候,注意url地址的变化: 第一页url: http: //www.neihan8.com/article/list_

Python爬虫入门七之正则表达式

在前面我们已经搞定了怎样获取页面的内容,不过还差一步,这么多杂乱的代码夹杂文字我们怎样把它提取出来整理呢?下面就开始介绍一个十分强大的工具,正则表达式! 1.了解正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑. 正则表达式是用来匹配字符串非常强大的工具,在其他编程语言中同样有正则表达式的概念,Python同样不例外,利用了正则表达式,我