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

    下面,我再写一个例子,加强对正则表达式的理解。还是回到我们下载的那个二手房网页,在实际中,我们并不需要整个网页的内容,因此我们来改进这个程序,对网页上的信息进行过滤筛选,并保存我们需要的内容。打开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=r'data-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(),将爬取到的内容保存到本地中。

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

               

转载于:https://www.cnblogs.com/CCColby/p/8454925.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值