豆瓣租房--根据地址筛选的爬虫

马上要去杭州工作了,在西湖区,首先我得去找房子啊~

看了一下大家都推荐的豆瓣租房,我发现,豆瓣没有提供【根据你想找的地址筛选出合适的出租房源信息】的功能。

我打算找翠苑那一带的房子,离公司近,但是找起来非常麻烦,一页25条信息,你一条条看过去可能只能只有2条信息符合你的地点要求。

没办法,我就写了一个简单的爬虫。

我先将我想住的地址附近的关键字,如地铁站名,公路名,小区名等存起来【不知道去百度地图搜--附近的小区】,然后我去爬信息的标题,标题里一旦出现关键字,我就将这个url存下来,然后我自己可以一个个点进去看,看房子信息如何。

代码非常简单,我没有对爬虫做任何伪装,也没有开线程池,然后跑下来结果是这样的:

urllib2.HTTPError: HTTP Error 403: Forbidden
[Finished in 221.1s with exit code 1]

跑了快4分钟,豆瓣才封了我。

然后我看了下存下来的数据,有750条左右,这些数据远远超过了我会去看的数据量,我觉得够了。

另外,我存成了csv格式,这样方便统一管理,如添加房主的联系信息,免得加了房主微信然后发现自己不知道这个房主要出租哪套房。

# -*- coding: utf-8 -*-
import urllib2
from bs4 import BeautifulSoup

start=0
end=100
page_size=25
key_words=["翠苑","文一路","文二路","文三路","古翠路","嘉绿文苑","五联西苑","今日嘉园","古荡","支付宝大楼","沁雅花园"]
key_words.extend(["古荡湾新村","枫华府第","天苑花园","益乐新村","古荡新村","世纪新城","金色蓝庭","龙湖唐宁","康新花园","南都银座"])
key_words.extend(["嘉绿北苑","嘉绿青苑","景城花园","嘉绿南苑","嘉绿福苑","华门世家","嘉绿莲苑","古荡湾","中兴文都苑"])
key_words.extend(["华星公寓","通普大楼"])

href_start=18
href_end=63
title_start=72

out_file=open("/Users/gao/Codes/douban_room/result.csv","w+")

def crawl_douban_room():
    for i in range(end):
        url="https://www.douban.com/group/145219/discussion?start="+str(i*25)
        req=urllib2.Request(url)
        response=urllib2.urlopen(req).read()
        soup=BeautifulSoup(response,"html5lib")
        info=soup.select("table.olt tbody tr")
        for child in info[1:]:
            content=child.select("td.title a")[0].prettify().encode('utf-8')
            href=content[href_start:href_end]
            title_end=content.find('">')
            title=content[title_start:title_end]
            for key_word in key_words:
                if title.find(key_word)!=-1:
                    print >> out_file, href,title
                    break
        
if __name__=="__main__":
    crawl_douban_room()
    


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值