“”"
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)