python爬虫入门(2)re模块-正则表达式

正则表达式



search //匹配第一次遇到符合规则的

匹配IP地址

  1. import re
  2. re.search(r‘(([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])\.){3}([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])‘,‘192.168.1.1‘)

findall:匹配所有,把所有匹配到的字符放到一个列表中并返回

  1. >>> p = re.compile(‘\d+‘)
  2. >>> p.findall(‘3只小甲鱼,15条腿,多出的3条在哪里?‘)
  3. [‘3‘, ‘15‘, ‘3‘]

编译正则表达式   re.compile()

  1. >>> import re
  2. >>> p = re.compile(‘[a-z]+‘)
  3. >>> p
  4. re.compile(‘[a-z]+‘)
  5. >>> p.match("")
  6. >>> print(p.match(""))
  7. None
  8. >>> m = p.match(‘fishc‘)
  9. >>> m
  10. <_sre.SRE_Match object; span=(0, 5), match=‘fishc‘>

方法:

group()   返回匹配的字符串

start()    返回匹配的开始位置

end()      返回匹配的结束位置

span()    返回一个元组表示匹配位置(开始,结束)

  1. >>> m.group()
  2. ‘fishc‘
  3. >>> m.start()
  4. 0
  5. >>> m.end()
  6. 5
  7. >>> m.span()
  8. (0, 5)

编译标志,详情请查看http://bbs.fishc.com/thread-57207-1-1.html

  1. 设置了编译标志符
  2. charref = re.compile(r"""
  3. &[#] # 开始数字引用
  4. (
  5. 0[0-7]+ # 八进制格式
  6. | [0-9]+ # 十进制格式
  7. | x[0-9a-fA-F]+ # 十六进制格式
  8. )
  9. ; # 结尾分号
  10. """, re.VERBOSE)
  1. 未设置编译标志符
  2. charref = re.compile("&#(0[0-7]+|[0-9]+|x[0-9a-fA-F]+);")

示例1:从代理网站上爬IP地址

  1. import urllib.request
  2. import re
  3. def open_url(url):
  4. req = urllib.request.Request(url)
  5. req.add_header(‘User-Agent‘,‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36‘)
  6. page = urllib.request.urlopen(req)#获取页面内容
  7. html = page.read().decode(‘utf-8‘)#解码页面内容
  8. return html
  9. def get_img(html):
  10. p = r‘(?:(?:[0,1]?\d?\d|2[0-4]\d|25[0-5])\.){3}(?:[0,1]?\d?\d|2[0-4]\d|25[0-5])‘ #匹配IP地址
  11. iplist = re.findall(p,html)
  12. for each in iplist:
  13. print(each)
  14. if __name__ == ‘__main__‘:
  15. url = "http://www.xicidaili.com/"
  16. get_img(open_url(url))

示例2:爬取妹纸图

  1. import urllib.request
  2. import os
  3. import re
  4. def save_imgs(folder,img_addrs):
  5. for each in img_addrs:
  6. filename=each.split(‘/‘)[-1]
  7. with open(filename,‘wb‘) as f:
  8. img =url_open(each)
  9. f.write(img)
  10. print(1)
  11. print(2)
  12. def url_open(url):
  13. reg= urllib.request.Request(url)
  14. reg.add_header(‘User-Agent‘,‘Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36‘)
  15. response = urllib.request.urlopen(url)
  16. html= response.read()
  17. return html
  18. def get_page(url):
  19. html = url_open(url).decode(‘utf-8‘)
  20. #a = html.find(‘current-comment-page‘)+23
  21. a = re.search (r‘\[\d{1,4}\]‘,html)
  22. a = a.group()
  23. b=len(a)
  24. a=a[1:b-1]
  25. return a
  26. def find_imgs(url):
  27. html =url_open(url).decode(‘utf-8‘)
  28. img_addrs= []
  29. a = html.find(‘img src=‘)
  30. while a != -1:
  31. b = html.find(‘.jpg‘,a,a+255)
  32. if b!= -1 :
  33. if ‘lanya‘ in html[a+9:b+4]:
  34. pass
  35. else:
  36. img_addrs.append(‘http:‘+html[a+9:b+4])
  37. else:
  38. b=a+9
  39. a = html.find(‘img src=‘,b)
  40. print(img_addrs)
  41. return img_addrs
  42. def download_mm(folder=‘ooxx‘,pages=4,star=0):
  43. os.mkdir(folder)
  44. os.chdir(folder)
  45. url = ‘http://jandan.net/ooxx/‘ #妹子图地址
  46. #url = ‘http://jandan.net/pic/‘ #无聊图地址
  47. if star!= 0 :
  48. page_num = star
  49. else:
  50. page_num=int(get_page(url))
  51. for i in range(pages):
  52. page_num-=1
  53. page_url = url + ‘page-‘+str(page_num)+‘#comments‘
  54. img_addrs=find_imgs(page_url)
  55. save_imgs(folder,img_addrs)
  56. print(page_url)
  57. if __name__==‘__main__‘:
  58. download_mm()

null

时间: 2024-10-27 11:26:18

python爬虫入门(2)re模块-正则表达式的相关文章

python爬虫入门练习,使用正则表达式和requests爬取LOL官网皮肤

刚刚python入门,学会了requests模块爬取简单网页,然后写了个爬取LOL官网皮肤的爬虫,代码奉上 #获取json文件#获取英雄ID列表#拼接URL#下载皮肤 #导入re requests模块 import requestsimport reimport time def Download_LOL_Skin(): #英雄信息Json文件地址:https://lol.qq.com/biz/hero/champion.js #获取英雄信息列表 json_url = "https://lol.

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

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

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

静觅 » Python爬虫入门七之正则表达式 1.了解正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑. 正则表达式是用来匹配字符串非常强大的工具,在其他编程语言中同样有正则表达式的概念,Python同样不例外,利用了正则表达式,我们想要从返回的页面内容提取出我们想要的内容就易如反掌了. 正则表达式的大致匹配过程是:1.依次拿出表达式和文本中的字符比较,2.如果每一个

Python爬虫入门之正则表达式

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

Python爬虫入门六之Cookie的使用

大家好哈,上一节我们研究了一下爬虫的异常处理问题,那么接下来我们一起来看一下Cookie的使用. 为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密) 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的.那么我们可以利用Urllib2库保存我们登录的Cookie,然后再抓取其他页面就达到目的了. 在此之前呢,我们必须先介绍一个opener的概念. 1.Opener 当你获取一个

(原)爬取辽宁科技大学相关新闻---python爬虫入门

有人说大部分python程序员都是通过爬虫入门的或者都是由爬虫喜欢上python的.还有大部分人学爬虫都喜欢拿自己学校的网站练手.我就是基于以上两点开始的... ok,开始,首先你需要一点python基础,一点点基础就可以,找一本薄薄的书过一遍,可以上这来找找 http://wiki.woodpecker.org.cn/moin/PyBooks 看书不爽,那你上这来看看,几道简简单单的题做过之后,顿觉一览众山小 http://www.pythontutor.com/ 咱们不是一边学爬虫,一边学p

Python爬虫入门教程:博客园首页推荐博客排行的秘密

1. 前言 虽然博客园注册已经有五年多了,但是最近才正式开始在这里写博客.(进了博客园才知道这里面个个都是人才,说话又好听,超喜欢这里...)但是由于写的内容都是软件测试相关,热度一直不是很高.看到首页的推荐博客排行时,心里痒痒的,想想看看这些大佬究竟是写了什么文章这么受欢迎,可以被推荐.所以用Python抓取了这100位推荐博客,简单分析了每个博客的文章分类,阅读排行榜,评论排行榜及推荐排行榜,最后统计汇总并生成词云.正好这也算是一篇非常好的Python爬虫入门教程了. 2. 环境准备 2.1

Python爬虫入门 | 爬取豆瓣电影信息

这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今天内你就可以迈入爬虫的大门啦~好啦,正式开始我们的第二节课<爬取豆瓣电影信息>吧!啦啦哩啦啦,都看黑板~1. 爬虫原理1.1 爬虫基本原理听了那么多的爬虫,到底什么是爬虫?爬虫又是如何工作的呢?我们先从"爬虫原理"说起.爬虫又称为网页蜘蛛,是一种程序或脚本.但重点在于:它能够按照一定的规则,自动

(原)python爬虫入门(2)---排序爬取的辽宁科技大学热点新闻

发现科大网页的源码中还有文章的点击率,何不做一个文章点击率的降序排行.简单,前面入门(1)基本已经完成我们所要的功能了,本篇我们仅仅需要添加:一个通过正则获取文章点击率的数字:再加一个根据该数字的插入排序.ok,大功告成! 简单说一下本文插入排序的第一个循环,找到列表中最大的数,放到列表 0 的位置做观察哨. 上代码: # -*- coding: utf-8 -*- # 程序:爬取点击排名前十的科大热点新闻 # 版本:0.1 # 时间:2014.06.30 # 语言:python 2.7 #--

转 Python爬虫入门一之综述

转自: http://cuiqingcai.com/927.html 静觅 » Python爬虫入门一之综述 首先爬虫是什么? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本. 要学习Python爬虫,我们要学习的共有以下几点: Python基础知识 Python中urllib和urllib2库的用法 Python正则表达式 Python爬虫框架Scrapy Python爬虫更高级的功能 1.Pyth