python爬虫之七 —— 链家二手房

前言

最近用爬虫在链家网上转了转,获取了成都所有二手房的数据(普通住宅,不含公寓、别墅等),一共5万多条,在爬数据的过程中发现了一些需要注意的问题:

  • 每一组筛选条件最多只能显示100页(每页30条,一次筛选最多3000条),需要拆分筛选项来获取一个城市的所有数据,我选择按地域拆分,其它方式也可以
  • 只有中心城区的二手房数据,稍远一点的区县基本没有或被归入临近的地区(看来链家的业务收缩在了中心区域)
  • 筛选区域划分让我有点懵逼,一个商圈在多个区都有,有的还直接归错了

根据这些数据做了一个分析展示,可以看这里

代码

import requests
from fake_useragent import UserAgent
from bs4 import BeautifulSoup as bs
import re
import json
import pymongo


class LianJia:
   def __init__(self):
       '''
       定义后面用到的属性
       '''
       self.start_url = 'https://cd.lianjia.com/ershoufang/rs/'
       self.ua = UserAgent()
       self.user_agent = self.ua.random
       self.headers = {
   'User-Agent': self.ua.random,
                       'Host': 'cd.lianjia.com',
                       'Referer': 'https://cd.lianjia.com/'}
       self.max_count = 5
       self.client = pymongo.MongoClient('localhost')
       self.db = self.client.spider
   
   def get_resp(self, url, count=1):
       '''
       定义通用的请求方法,后面可以重复调用
       '''
       if count >= self.max_count:
           print('Tried Too Many Times')
           return None        
       try:
           resp = requests.get(url, headers=self.headers, timeout=30)
           return resp.content.decode()
       except Exception as e:
           print('Error Occurred', e.args)
           count += 1
           return self.get_resp(url, count)
   
   def get_zonelist(self, content):
       '''
       这个方法可以获取地级市下面所有区县的url
       '''
       if content:
           soup = bs(content, 'lxml')
           results = soup.select_one('div.position > dl > dd > div > div').select('a')
           result_dict = {
   result
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值