码迷,mamicode.com
首页 > 编程语言 > 详细

python爬虫(6)——正则表达式(三)

时间:2018-02-20 15:36:19      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:oschina   write   data   正则表达   col   --   pat   因此   urllib   

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

 

 

              技术分享图片

    

    在网页源码中找到了我们所需要的内容。为了调试程序,我们可以在  http://tool.oschina.net/regex/  上测试编译好的正则表达式。

    对于  houseinfo:pattern=r‘ data-el="region">(.+?)</div>‘

    对于  price:pattern=r‘<div class="totalPrice"><span>\d+</span>万‘

技术分享图片技术分享图片

    我们用正则提取的内容是有冗余部分的,可以联想到用切片的方法处理提取内容。上源码:

 1 from urllib import request
 2 import re
 3 
 4 def HTMLspider(url,startPage,endPage):
 5     
 6     #作用:负责处理URL,分配每个URL去发送请求
 7     
 8     for page in range(startPage,endPage+1):
 9         filename="" + str(page) + "页.html"
10     
11         #组合为完整的url
12         fullurl=url + str(page)
13 
14         #调用loadPage()发送请求,获取HTML页面
15         html=loadPage(fullurl,filename)
16 
17 
18 
19 def loadPage(fullurl,filename):
20     #获取页面
21     response=request.urlopen(fullurl)
22     Html=response.read().decode(utf-8)
23     #print(Html)
24    
25     #正则编译,获取房产信息
26     info_pattern=rdata-el="region">(.+?)</div>
27     info_list=re.findall(info_pattern,Html)
28     #print(info_list)
29     #正则编译,获取房产价格
30     price_pattern=r<div class="totalPrice"><span>\d+</span>万
31     price_list=re.findall(price_pattern,Html)
32     #print(price_list)
33 
34     writePage(price_list,info_list,filename)
35 
36 
37 
38 
39 def writePage(price_list,info_list,filename):
40     """
41     将服务器的响应文件保存到本地磁盘
42     """
43     list1=[]
44     list2=[]
45     for i in price_list:
46         i=-------------->>>>>Price: + i[30:-8] + 
47         list1.append(i)
48         #print(i[30:-8])
49     for j in info_list:
50         j=j.replace(</a>, *10)
51         j=j[:10] +  *5 +  ---------->>>>>Deatil information:   + j[10:] +  *5
52         list2.append(j)
53     #print(j)
54 
55     for each in zip(list2,list1):
56         print(each)
57 
58 
59 
60     print("正在存储"+filename)
61     #with open(filename,‘wb‘) as f:
62      #   f.write(html)
63 
64 
65     print("--"*30)
66 
67 
68 if __name__=="__main__":
69     #输入需要下载的起始页和终止页,注意转换成int类型
70     startPage=int(input("请输入起始页:"))
71     endPage=int(input("请输入终止页:"))
72 
73     url="https://sh.lianjia.com/ershoufang/"
74 
75     HTMLspider(url,startPage,endPage)
76 
77     print("下载完成!")

    这是程序运行后的结果。我只是将其打印在终端,也可以使用json.dumps(),将爬取到的内容保存到本地中。

    实际上这种数据提取还有其他方法,这将在以后会讲到。

               技术分享图片

python爬虫(6)——正则表达式(三)

标签:oschina   write   data   正则表达   col   --   pat   因此   urllib   

原文地址:https://www.cnblogs.com/CCColby/p/8454925.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!