“”" http://gz.ihk.cn/myxf/houselist/?mark=gzxf089 第一页 http://gz.ihk.cn/myxf/houselist/p2/?mark=gzxf089 http://gz.ihk.cn/myxf/houselist/p3/?mark=gzxf089
“”"
import requests import re class House(): def __call__(self, *args, **kwargs): self.run() self.page_start=page_start self.page_end=page_end def run(self): #获取基础的url for page in range(int(page_start),int(page_end)+1): base_url="http://gz.ihk.cn/myxf/houselist/p{}/?mark=gzxf089".format(page) response=requests.get(base_url) #获取HTML文件 html=response.text # print(html)#打印查看是否获取到 print('========================={}页开始下载==============================='.format(page)) self.get_data(html)#调用get_data并且传递参数html def get_data(self,html): #获取想要爬取的详细信息 #缩小范围,获取div列表 div_list=re.findall('<div class="n_conlistpic">.*?<div class="n_conlistrliioc">',html,re.S) # print(div_list[1])#查看第一个列表元素以便于继续写代码 # print(len(div_list)) #循环获取每一个楼房的信息onclick for div in div_list: #1 获取楼房的名称 name=re.findall('<a><strong>(.*?)</strong></a>',div)[0] # print(name) #2 获取楼房的楼盘的描述 #(1 首先获取每一个<div class="n_conlistrbrief">标签,然后再获取里面的span标签 details_div=re.findall('<div class="n_conlistrbrief">([\w\W]*?)</div>',div)[0] # print(details_div) #获取详情 details=re.findall('<span>(.*?)</span>',details_div)[0] # print(details) # 爬取住户类型 type=re.findall('<div class="n_conlistradd"><span>主力户型:(.*?)</span',div)[0] # print(type) #爬取地址 address=re.findall('<div class="n_conlistradd"><em class="i12"></em><span>(.*?)</span></div>',div)[0] # print(address) # 爬取图片 picture =re.findall('data-original="(.*?)"',div) # print(picture) #爬取价格: try: price=re.findall('<li><strong>(.*?)</strong><b>元/m²起</b></li>',div)[0] # print(price) except IndexError as e: print(e) finally: house_dict={ 'name':name, 'details':details, 'type':type, 'address':address, 'price':price, 'picture':picture } print(house_dict) if __name__ == '__main__': page_start=input('请输入要爬的起始页:') page_end=input('输入要爬取的终止页') home=House() home(page_start,page_end)