tetreum/xupopter

Xupopter 爬取西班牙主要房地产买卖网站,如 Idealista、Fotocasa、Habitatclia、Pisos.com

dev-master 2018-10-27 17:36 UTC

This package is auto-updated.

Last update: 2020-01-13 20:43:34 UTC


README

编辑:我已经买了房子,所以不再维护。

Xupopter

Build Status License

Xupopter 爬取西班牙知名房地产买卖和租赁网站。

爬取的供应商列表

  • Pisos.com
  • Habitaclia.com
  • Fotocasa.es
  • Idealista.com

为什么?

某些网站的可用性较差。其他网站缺乏过滤器(我已经厌倦了排除包含赠与[即使用权]的出售房屋)。

安装

composer require tetreum/xupopter dev-master

一个供应商停止工作!没有爬取X数据!

太好了,修复它并提交PR。

一些结果没有被爬取!

Xupopter 对爬取房屋的最小特征(如图片和平方米数)有要求。不符合这些要求的结果将被丢弃。

房屋对象

  • 标题
  • 描述
  • 价格
  • URL
  • 平方米
  • 图片

-- 可选参数

  • hasAirConditioner
  • hasElevator
  • floor

使用示例

一个每日的cron作业。

  • bootstrap.php
<?php
// Includes vendor libraries
require "vendor/autoload.php";

use Xupopter\System\App as Xupopter;

define('APP_ROOT', __DIR__ . DIRECTORY_SEPARATOR);
date_default_timezone_set("Europe/Madrid");

// Include configurations and global constants
Xupopter::$config = require "conf.php";
  • conf.php
<?php
return [
	'tmp' => APP_ROOT . 'tmp/', // in debug mode, html curls will be cached
	'mode' => 'production',
	'debug' => false,
	'test' => false,
	'providers' => [
		'Habitaclia' => [
            "/comprar-vivienda-en-barcelones/provincia_barcelona/listainmuebles.htm?bolIsFiltro=0&tip_op_origen=V&hUserClickFilterButton=&filtro_periodo=0&hMinLat=&hMinLon=&hMaxLat=&hMaxLon=&hUseLatLonFilters=&hNumPointsMapa=&ordenar=pvp_inm_desc&f_con_fotos=0"
    	],
		'Fotocasa' => [
			'/comprar/casas/barcelona-capital/listado?crp=1&ts=barcelona%20capital&llm=724,9,8,232,376,8019,0,0,0&f=publicationdate&o=asc&opi=36&ftg=true&pgg=false&odg=false&fav=false&grad=false&fss=false&mode=3&cu=es-es&pbti=2&nhtti=1&craap=1&fs=true&lon=0&lat=0&fav=false'
		],
		'Pisos' => [
			'/venta/pisos-barcelones/desc/'
		],
		"Idealista" => [
			"/venta-viviendas/barcelona-barcelona/?ordenado-por=precio-desc"
		]
	],
    "avoid" => [
        'text' => [ // text == title + description
            "usufructo",
            "beneficiario",
        ],
        "location" => [
            "ciutat meridiana",
            "trinitat nova",
            "trinitat vella",
            "carmel",
            "roquetes"
        ]
    ]
];
  • cron.php
<?php
set_time_limit(0);

require 'bootstrap.php';

use Xupopter\System\App;

foreach (App::config('providers') as $pName => $paths)
{
	App::runProvider($pName, $paths, function ($house) {
	    // callback fired for each crawled house
		// echo $house->title . " - " . $house->price . "€";
		// $mysql->query("INSERT INTO houses...
	});
}

待办事项

  • 用于检测URL来自哪个供应商并转发给同一供应商的功能。
  • 重构回调函数的实现
  • 爬取 Idealista 的发布日期
  • 添加更多供应商