Python如何爬取房源数据
这篇“Python如何爬取房源数据”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python如何爬取房源数据”文章吧。
一、爬虫是什么?在进行大数据分析或者进行数据挖掘的时候,数据源可以从某些提供数据统计的网站获得,也可以从某些文献或内部资料中获得,但是这些获得数据的方式,有时很难满足我们对数据的需求,而手动从互联网中去寻找这些数据,则耗费的精力过大。此时就可以利用爬虫技术,自动地从互联网中获取我们感兴趣的数据内容,并将这些数据内容爬取回来,作为我们的数据源,从而进行更深层次的数据分析,并获得更多有价值的信息。 在使用爬虫前首先要了解爬虫所需的库(requests)或者( urllib.request ),该库是为了爬取数据任务而创建的。
二、使用步骤1.引入库本篇文章所有url皆为不可用url,不可直接运行!(爬取他人的数据是一种违法行为,学习爬虫的时候请注意!)
代码如下(示例):
importosimporturllib.requestimportrandomimporttimeclassBeikeSpider:def__init__(self,save_path="./beike"):"""贝壳爬虫构造函数:paramsave_path:网页保存目录"""2.读入数据
代码如下 :
#网址模式self.url_mode="http://{}.***.com/loupan/pg{}/"#需爬取的城市self.cities=["cd","sh","bj"]#每个城市爬取的页数self.total_pages=20#让爬虫程序随机休眠5-10秒self.sleep=(5,10)#网页下载保存根目录self.save_path=save_path#设置用户代理,是爬虫程序伪装成浏览器self.headers={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/89.0.4389.114Safari/537.36"}#代理IP的信息self.proxies=[{"https":"123.163.67.50:8118"},{"https":"58.56.149.198:53281"},{"https":"14.115.186.161:8118"}]#创建保存目录ifnotos.path.exists(self.save_path):os.makedirs(self.save_path)defcrawl(self):"""执行爬取任务:return:None"""
该处使用的url网络请求的数据。
3.随机选择一个ip地址构建代理服务器forcityinself.cities:print("正在爬取的城市:",city)#每个城市的网页用单独的目录存放path=os.path.join(self.save_path,city)ifnotos.path.exists(path):os.makedirs(path)forpageinrange(1,self.total_pages+1):#构建完整的urlurl=self.url_mode.format(city,page)#构建Request对象,将url和请求头放入对象中request=urllib.request.Request(url,headers=self.headers)#随机选择一个代理IPproxy=random.choice(self.proxies)#构建代理服务器处理器proxy_handler=urllib.request.ProxyHandler(proxy)#构建openeropener=urllib.request.build_opener(proxy_handler)#使用构建的opener打开网页response=opener.open(request)html=response.read().decode("utf-8")#网页保存文件名(包含路径)filename=os.path.join(path,str(page)+".html")#保存网页self.save(html,filename)print("第%d页保存成功!"%page)#随机休眠sleep_time=random.randint(self.sleep[0],self.sleep[1])time.sleep(sleep_time)
该处除随机选择ip地址以外还会限制爬取数据的速度,避免暴力爬取。
4.运行代码defsave(self,html,filename):"""保存下载的网页:paramhtml:网页内容:paramfilename:保存的文件名:return:"""f=open(filename,'w',encoding="utf-8")f.write(html)f.close()defparse(self):"""解析网页数据:return:"""passif__name__=="__main__":spider=BeikeSpider()spider.crawl()
运行结果就会这样,会保存在你的文件夹中。
以上就是关于“Python如何爬取房源数据”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。