python爬虫(6)——正则表达式(三)
下面,我再写一个例子,加强对正则表达式的理解。还是回到我们下载的那个二手房网页,在实际中,我们并不需要整个网页的内容,因此我们来改进这个程序,对网页上的信息进行过滤筛选,并保存我们需要的内容。打开chrome浏览器,右键检查。

在网页源码中找到了我们所需要的内容。为了调试程序,我们可以在 http://tool.oschina.net/regex/ 上测试编译好的正则表达式。
对于 houseinfo:pattern=r' data-el="region">(.+?)</div>'
对于 price:pattern=r'<div class="totalPrice"><span>\d+</span>万'


我们用正则提取的内容是有冗余部分的,可以联想到用切片的方法处理提取内容。上源码:
from urllib import request
import re def HTMLspider(url,startPage,endPage): #作用:负责处理URL,分配每个URL去发送请求 for page in range(startPage,endPage+1):
filename="第" + str(page) + "页.html" #组合为完整的url
fullurl=url + str(page) #调用loadPage()发送请求,获取HTML页面
html=loadPage(fullurl,filename) def loadPage(fullurl,filename):
#获取页面
response=request.urlopen(fullurl)
Html=response.read().decode('utf-8')
#print(Html) #正则编译,获取房产信息
info_pattern=r'data-el="region">(.+?)</div>'
info_list=re.findall(info_pattern,Html)
#print(info_list)
#正则编译,获取房产价格
price_pattern=r'<div class="totalPrice"><span>\d+</span>万'
price_list=re.findall(price_pattern,Html)
#print(price_list) writePage(price_list,info_list,filename) def writePage(price_list,info_list,filename):
"""
将服务器的响应文件保存到本地磁盘
"""
list1=[]
list2=[]
for i in price_list:
i='-------------->>>>>Price:' + i[30:-8] + '万'
list1.append(i)
#print(i[30:-8])
for j in info_list:
j=j.replace('</a>',' '*10)
j=j[:10] + ' '*5 + '---------->>>>>Deatil information: ' + j[10:] + ' '*5
list2.append(j)
#print(j) for each in zip(list2,list1):
print(each) print("正在存储"+filename)
#with open(filename,'wb') as f:
# f.write(html) print("--"*30) if __name__=="__main__":
#输入需要下载的起始页和终止页,注意转换成int类型
startPage=int(input("请输入起始页:"))
endPage=int(input("请输入终止页:")) url="https://sh.lianjia.com/ershoufang/" HTMLspider(url,startPage,endPage) print("下载完成!")
这是程序运行后的结果。我只是将其打印在终端,也可以使用json.dumps(),将爬取到的内容保存到本地中。
实际上这种数据提取还有其他方法,这将在以后会讲到。

python爬虫(6)——正则表达式(三)的更多相关文章
- Python爬虫学习:三、爬虫的基本操作流程
本文是博主原创随笔,转载时请注明出处Maple2cat|Python爬虫学习:三.爬虫的基本操作与流程 一般我们使用Python爬虫都是希望实现一套完整的功能,如下: 1.爬虫目标数据.信息: 2.将 ...
- 玩转python爬虫之正则表达式
玩转python爬虫之正则表达式 这篇文章主要介绍了python爬虫的正则表达式,正则表达式在Python爬虫是必不可少的神兵利器,本文整理了Python中的正则表达式的相关内容,感兴趣的小伙伴们可以 ...
- 【Python爬虫】正则表达式与re模块
正则表达式与re模块 阅读目录 在线正则表达式测试 常见匹配模式 re.match re.search re.findall re.compile 实战练习 在线正则表达式测试 http://tool ...
- 路飞学城-Python爬虫集训-第三章
这个爬虫集训课第三章的作业讲得是Scrapy 课程主要是使用Scrapy + Redis实现分布式爬虫 惯例贴一下作业: Python爬虫可以使用Requests库来进行简单爬虫的编写,但是Reque ...
- python 爬虫之-- 正则表达式
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. 正则表达式非python独有,python 提供了正则表达式的接口,re模块 一.正则匹配字符简介 模式 描述 \d ...
- Python爬虫学习笔记(三)
Cookies: 以抓取https://www.yaozh.com/为例 Test1(不使用cookies): 代码: import urllib.request # 1.添加URL url = &q ...
- Python爬虫之正则表达式的使用(三)
正则表达式的使用 re.match(pattern,string,flags=0) re.match尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none 参数 ...
- python爬虫训练——正则表达式+BeautifulSoup爬图片
这次练习爬 传送门 这贴吧里的美食图片. 如果通过img标签和class属性的话,用BeautifulSoup能很简单的解决,但是这次用一下正则表达式,我这也是参考了该博主的博文:传送门 所有图片的s ...
- Python 爬虫入门(三)—— 寻找合适的爬取策略
写爬虫之前,首先要明确爬取的数据.然后,思考从哪些地方可以获取这些数据.下面以一个实际案例来说明,怎么寻找一个好的爬虫策略.(代码仅供学习交流,切勿用作商业或其他有害行为) 1).方式一:直接爬取网站 ...
- 【python爬虫和正则表达式】爬取表格中的的二级链接
开始进公司实习的一个任务是整理一个网页页面上二级链接的内容整理到EXCEL中,这项工作把我头都搞大了,整理了好几天,实习生就是端茶送水的.前段时间学了爬虫,于是我想能不能用python写一个爬虫一个个 ...
随机推荐
- [国嵌笔记][019][Eclipse集成开发环境]
Eclipse集成开发环境的作用 可以编译程序,也可以对程序进行在线调试 集成开发环境 1.JLink连接开发板的JTAG 2.JLink连接PC的USB 3.eclipse软件 4.gdb serv ...
- 97、爬虫框架scrapy
本篇导航: 介绍与安装 命令行工具 项目结构以及爬虫应用简介 Spiders 其它介绍 爬取亚马逊商品信息 一.介绍与安装 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, ...
- N的N次方
题目描述 现给你一个正整数N,请问N^N的最左边的数字是什么? 输入 输入包含多组测试数据.每组输入一个正整数N(N<=1000000). 输出 对于每组输入,输出N^N的最左边的数字. 样例输 ...
- 整理关于web项目如何防止CSRF和XSS攻击的方法
1 了解CSRF的定义 CSRF(Cross-site request forgery)跨站请求伪造,也被称为"One Click Attack"或者Session Riding, ...
- Sublime Text 使用介绍、全套快捷键及插件推荐
开篇:如果说Notepad++是一款不错Code神器,那么Sublime Text应当称得上是神器滴哥.Sublime Text最大的优点就是跨平台,Mac和Windows均可完美使用:其次是强大的插 ...
- 怎么看vue版本
查看vue版本号是 vue -V 而不是npm vue -v ,npm vue -v 等同于npm -v vue -V: 后面那个V是大写的.
- 本地如何使用phpstudy环境搭建多站点
http://jingyan.baidu.com/article/e52e36154227ef40c70c5147.html 平时在开发项目的时候, 多个项目同时开发的时候会遇到都得放到根目录才能正常 ...
- Asp.net mvc 中的路由
在 Asp.net mvc 中,来自客户端的请求总是针对某个 Controller 中的 Action 方法,因此,必须采用某种机制从请求的 URl 中解析出对应的 Controller 和 Acti ...
- start tomcat with debugging mode
For this, you must run your application in debug mode, which requires below parameters. -Xdebug -Xru ...
- JavaScript return 最简单解释
一.return 返回值 1)函数名字 +括号 :fun() ==> retrun 后面的值 2)所以函数的模范返回值是为未定义 3)return; 后面的任何代码都不会执行了 二.arguem ...