前言:
如今小伙伴们对“python爬取二手房信息”大概比较关心,朋友们都想要了解一些“python爬取二手房信息”的相关内容。那么小编同时在网摘上汇集了一些关于“python爬取二手房信息””的相关资讯,希望我们能喜欢,各位老铁们一起来学习一下吧!一、相信有很多朋友在学习python后,一定都有过使用这门语言编写爬虫的想法。刚刚学习了python的小白(因为很白所以叫小白)我也是如此。这里小白和小白的伙伴就以python新手的身份分享一下我们使用python爬虫爬取二手房网的房源信息的过程。如有大佬路过,求大佬指出其中需要改进的地方,小白我感激不尽。
编写爬虫之前,我们首先应该搞清楚爬虫到底是干什么的。这里语言表达力不足的小白只好借用度娘上的答案向大家介绍一下:
网络爬虫,又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。
大概了解爬虫后,我们就要开始做编写爬虫的准备工作了。首先是我们已经确定是用python语言进行编写,然后我们就要确定使用什么开发平台和环境了,这里,小白使用的是Windows平台 (准备之前查了一些资料,看到一些大佬说就开发而言,linux比windows用起来舒服,所以大家也可以试试linux),开发环境是pycharm2021社区版(开始下载了专业版,但是发现每天打开都需要输入激活码,并且对于我们一般人来说社区版也够用了,于是重新下载了社区版)。
接下来应该就是要准备编写爬虫了,其实,在小白看来,编写爬虫其实就是各种库的应用。首先说一下我们的大概思路:爬取数据——解析数据——存储数据。第一步我们需要安装我们需要的库,安装方法网上很多,这里就不具体说了。接下来是导入我们需要的库,导入库的语句为 import +库;例如在我的代码中需要的库导入如下:
# -*- coding: utf-8 -*-from urllib import requestimport reimport timeimport threadingimport randomimport pymysqlfrom hashlib import md5#from ua_info import ua_listfrom fake_useragent import UserAgentimport sysclass study(): def __init__(self): self.url='{}/' # 1.请求函数 def get_html(self, url): ua=UserAgent() #print(ua.chrome) headers = {'User-Agent': ua.chrome} req = request.Request(url=url, headers=headers) res = request.urlopen(req) # 本网站使用utf8的编码格式 html = res.read().decode('utf8', 'ignore') return html # 2.正则解析函数 def re_func(self,re_bds,html): pattern = re.compile(re_bds,re.S) r_list = pattern.findall(html) return r_list # 格式化,正则表达式匹配页面 def parse_html(self,one_url): # 调用请求函数,获取一级页面 one_html = self.get_html(one_url) #print(one_html) #re_bds = '<a class="" .*?data-el="ershoufang".*?>(.*?)</a>' #re_bds='<div class="info clear">.*?</div>' #re_bds='<div class="title"><a.*?data-el="ershoufang".*?>(.*?)</a>.*?<span class="goodhouse_tag tagBlock">(.*?)</span></div>' re_bds='<div class="info clear"><div class="title"><a.*?data-el="ershoufang".*?>(.*?)</a>.*?<span class="goodhouse_tag tagBlock">(.*?)</span></div><div class="flood"><div class="positionInfo"><span class="positionIcon"></span><a .*?data-el="region">(.*?)</a> - <a href="(.*?)/" target="_blank">(.*?)</a> </div></div><div class="address"><div class="houseInfo"><span class="houseIcon"></span>(.*?)</div></div><div class="followInfo"><span class="starIcon"></span>(.*?)</div><div class="tag">(.*?)</div><div class="priceInfo"><div class="totalPrice totalPrice2"><i> </i><span class="">(.*?)</span><i>万</i></div><div class="unitPrice".*?><span>(.*?)</span></div></div></div>' link_list = self.re_func(re_bds,one_html) print(link_list) for link in link_list: print (link) print(100*'*') #对于部分正常可以获取到最大页码数,可以采用 def get_max_page(self,one_url): one_html = self.get_html(one_url) print(one_html) re_bds = '<a href="/ershoufang/pg(.*?)" data-page="(.*?)">(.*?)</a>' print(re_bds) link_list = self.re_func(re_bds,one_html) #print(link_list) return link_list[link_list.__len__()-1][1]; def run(self): for i in range(100): url = self.url.format(i) #定时抓取当前最新的数据 self.parse_html(url) # 输出当地时间 print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) # 设置一个定时器,循环输出时间 timer = threading.Timer(6*60*60, self.run) # 启动线程 timer.start() #self.parse_html(';)if __name__ == '__main__': spider = study() spider.run()
标签: #python爬取二手房信息