Python里scrapy爬虫

scrapy爬虫,正好最近成都房价涨的厉害,于是想着去网上抓抓成都最近的房价情况,顺便了解一下,毕竟咱是成都人,得看看这成都的房子我以后买的起不~


话不多说,进入正题:

任务

抓取链家网(成都)的所有新房以及二手房价格、位置相关信息。

实验流程

1.确定抓取目标.

2.制定抓取规则.

3.'编写/调试'抓取规则.

4.获得抓取数据

1.确定抓取目标

1.1新房抓取目标

我们看到在成都楼盘列表页面,有楼盘名字、均价(每平方)和所属行政区,非常好,这正是我们想要抓取的内容!

于是确定目标:

抓取成都新房的所有楼盘名称、均价信息、所属行政区和URL信息。

1.2二手房抓取规则

我们来到二手房的列表页面,并且点击进入二手房详情页面,发现网站所展示的内容就比新房的内容的多得多了,这样我们也能抓取更多的数据了!在这里,我决定在二手房页面抓取二手房地址、总价、每平米价、面积、所属行政区域和URL信息。

2.制定抓取规则

2.1新房抓取规则

由于新房的信息直接在新房列表网页上就能直接抓取,所以只需要在新房列表网页分析html结构找到我们想要的数据即可。

对于均价来说,我们所需要的信息在 //div[@class='average']/span/text()

对于楼盘名称来说,我们所需要的信息在 //div[@class='col-1']/h2/a/text()

当然了,我们所需要的URL也在 //div[@class='col-1']/h2/a/@href

对于行政区来说,所需要的信息在 //div[@class='where']/span/text(),当然了,我们还得使用正则将所属行政区匹配出来

如何抓取所有的新房信息呢?我们利用下一页来循环

2.2二手房抓取规则

抓取规则和新房抓取规则大同小异,不过这里有一点小小的区别是我们需要利用二手房列表页面抓取到的URL,进入二手房详情页抓取信息,不过这一点我们将在代码实现中讲到,在这儿先按住不表,还是继续分析html结构。

小区名称在 div[@class='communityName']/a[@class='info']/text()

房总价在 div[@class='price ']/span[@class='total']/text()

每平方价在 div[@class='price ']/div[@class='text']/div/span/text() ,当然这里我们还是得用正则把两个引号给弄掉~

所属行政区在 div[@class='areaName']/span[@class='info']/a/text()的第一个text

面积在 div[@class='houseInfo']/div[@class='area']/div[@class='mainInfo']/text()

当然了,对于循环获得所有信息来说,我们还是用网站的“下一页”来做。

3.'编写/调试'抓取规则

为了让调试爬虫的粒度尽量的小,我将编写和调试模块糅合在一起进行.


3.1'编写/调试'新房抓取规则

首先我们得定义一个item:

class NewHoseItem(scrapy.Item):

然后我们尝试抓取一个新房列表页面下的所需数据吧~

import scrapyfrom fangjia.items import NewHouseItemclass NewsHouseSpider(scrapy.Spider):

测试通过!

现在我们再编写一下循环的规则就ok了!

由于我们需要获取到totalpage的值和curpage的值,所以我们得对获取到的字符串稍微的处理一下,这里我们用到的是split()

next_page = response.xpath("//div[@class='page-box house-lst-page-box']/@page-data").extract_first().split(',')[1].split(':')[1]

组装到我们的原函数里面

import scrapy

测试,成功!

3.2'编写/调试'二手房抓取规则

二手房抓取规则和新房差不多,所以写简单一点,其中主要说明一点是利用二手房列表页面抓取到的URL,进入二手房详情页抓取信息。

先定义item:

class OldHouseItem(scrapy.Item):

当然了,我们还是先写出一个二手房列表页面的抓取规则,其中,得利用抓取到的URL再进入二手房详情页进行抓取。

编写爬虫:

import scrapy

发现有重定向:

一看,是robot的原因,于是我们进入 http://cd.lianjia.com/robots.txt 一探究竟

在robots.txt最下面看到

User-agent:*

Disallow:/

学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入学习交流群

626062078,我们一起学Python!

Python抓取成都房价信息的更多相关文章

  1. 使用python抓取美团商家信息

    抓取美团商家信息 import requests from bs4 import BeautifulSoup import json url = 'http://bj.meituan.com/' ur ...

  2. 用python抓取求职网站信息

    本次抓取的是智联招聘网站搜索“数据分析师”之后的信息. python版本: python3.5. 我用的主要package是 Beautifulsoup + Requests+csv 另外,我将招聘内 ...

  3. python抓取贝壳房源信息

    分析了贝壳的房源信息数据,发现地址链接的参数传递是有规律的 https://tj.ke.com/chengjiao/a3l4/ a3 实际表示的 l4 表示的是 然后 将复合条件拼成一个字符串,带过去 ...

  4. Python 抓取网页并提取信息(程序详解)

    最近因项目需要用到python处理网页,因此学习相关知识.下面程序使用python抓取网页并提取信息,具体内容如下: #---------------------------------------- ...

  5. 用python抓取智联招聘信息并存入excel

    用python抓取智联招聘信息并存入excel tags:python 智联招聘导出excel 引言:前一阵子是人们俗称的金三银四,跳槽的小朋友很多,我觉得每个人都应该给自己做一下规划,根据自己的进步 ...

  6. 使用python抓取58手机维修信息

    之前在ququ的博客上看到说 python 中的BeautifulSoup 挺好玩的,今天下午果断下载下来,看了下api,挺好用的,完了2把,不错. 晚上写了一个使用python抓取58手机维修信息的 ...

  7. Python爬虫实战---抓取图书馆借阅信息

    Python爬虫实战---抓取图书馆借阅信息 原创作品,引用请表明出处:Python爬虫实战---抓取图书馆借阅信息 前段时间在图书馆借了很多书,借得多了就容易忘记每本书的应还日期,老是担心自己会违约 ...

  8. python抓取链家房源信息(二)

    试着用scrapy将之前写的抓取链家网信息的重新写了写 然后先是用了第一页的网页作为测试,调试代码,然后发现总是抓取的时候遇见了 类似于这样的问题,并且抓取不到信息 2017-03-28 17:52: ...

  9. 使用Python抓取猫眼近10万条评论并分析

    <一出好戏>讲述人性,使用Python抓取猫眼近10万条评论并分析,一起揭秘“这出好戏”到底如何? 黄渤首次导演的电影<一出好戏>自8月10日在全国上映,至今已有10天,其主演 ...

随机推荐

  1. mybatis面向接口的编程

    一.实现面向接口编程 具体操作方法如下: 第一:编写一个接口(IUser.java) 接口暂时为空接口,接口文件包路径:com.gusi.demo.idao.IUser 第二:修改映射文件(User. ...

  2. [CTSC1999]【网络流24题】星际转移

    Description 由于人类对自然资源的消耗,人们意识到大约在2300 年之后,地球就不能再居住了.于是在月球上建立了新的绿地,以便在需要时移民.令人意想不到的是,2177 年冬由于未知的原因,地 ...

  3. curl_escape ---> 使用URL 编码给定的字符串

    curl_escape (PHP 5 >= 5.5.0) curl_escape — 使用 URL 编码给定的字符串 说明¶ string curl_escape ( resource $ch  ...

  4. OpenMP 入门教程

    前两天(其实是几个月以前了)看到了代码中有 #pragma omp parallel for 一段,感觉好像是 OpenMP,以前看到并行化的东西都是直接躲开,既然躲不开了,不妨研究一下: OpenM ...

  5. 安装Vmware 以及 Vmware 中安装Ubuntu 以及其中问题?

    在vmware中安装ubuntu 过程中 安装窗口太小,无法继续下一步? 按住alt键,用鼠标拖动linux的安装窗体,向上移动就能看到下面的确定按钮. 如何安装Vmware-tools? 1.VM菜 ...

  6. php函数的种类与调用方法大揭密

    PHP中的函数看上去很简单,实际上功能非常强大,我这里按函数名称是否固定,可以分为以下三大类: 一.名称固定的函数: 这类函数,也叫:常规函数,直接用关键字function来创建,也是大家最熟悉的类型 ...

  7. GitExtensions-2.48安装详细教程

    在安装GitExtensions时你可能遇到如下问题,如果出现此提示,则先退出安装,去下载安装.NET Framework4.0之后,再启动GitExtension的安装. 开始进行安装: 安装完成, ...

  8. hadoop集群中客户端修改、删除文件失败

    这是因为hadoop集群在启动时自动进入安全模式 查看安全模式状态:hadoop fs –safemode get 进入安全模式状态:hadoop fs –safemode enter 退出安全模式状 ...

  9. String深度解析

    文章出处:http://my.oschina.net/xiaohui249/blog/170013 一.引题 String类型是比较特殊的一种类型,同时也是面试经常被问到的一个知识点,本文结合java ...

  10. linux -- 个人笔记

    ##转自别人的博客 一般直接用tar命令打包很简单,直接使用 tar -zcvf test.tar.gz test 即可. 在很多时候,我们要对某一个目录打包,而这个目录下有几十个子目录和子文件,我们 ...