Python爬取链家二手房数据——重庆地区

最近在学习数据分析的相关知识,打算找一份数据做训练,于是就打算用Python爬取链家在重庆地区的二手房数据。

链家的页面如下:

爬取代码如下:

import requests, json, time
from bs4 import BeautifulSoup
import re, csv
def parse_one_page(url):
    headers={
      ‘user-agent‘:‘Mozilla/5.0‘
    }
    r = requests.get(url, headers=headers)
    soup = BeautifulSoup(r.text, ‘lxml‘)
    results = soup.find_all(class_="clear LOGCLICKDATA")

    for item in results:
        output = []
        # 从url中获得区域
        output.append(url.split(‘/‘)[-3]) 

        # 获得户型、面积、朝向等信息,有无电梯的信息可能会有缺失,数据清理可以很方便的处理
        info1 = item.find(‘div‘, ‘houseInfo‘).text.replace(‘ ‘, ‘‘).split(‘|‘)
        for t in info1:
            output.append(t)

        # 获得总价
        output.append(item.find(‘div‘, ‘totalPrice‘).text)

        # 获得年份信息,如果没有就为空值
        info2 = item.find(‘div‘, ‘positionInfo‘).text.replace(‘ ‘, ‘‘)
        if info2.find(‘年‘) != -1:
            pos = info2.find(‘年‘)
            output.append(info2[pos-4:pos])
        else:
            output.append(‘ ‘)

        # 获得单价
        output.append(item.find(‘div‘, ‘unitPrice‘).text)
        #print(output)
        write_to_file(output)

def write_to_file(content):
    # 参数newline保证输出到csv后没有空行
    with open(‘data.csv‘, ‘a‘, newline=‘‘) as csvfile:
        writer = csv.writer(csvfile)
        #writer.writerow([‘Region‘, ‘Garden‘, ‘Layout‘, ‘Area‘, ‘Direction‘, ‘Renovation‘, ‘Elevator‘, ‘Price‘, ‘Year‘, ‘PerPrice‘])
        writer.writerow(content)

def main(offset):
    regions = [‘jiangbei‘, ‘yubei‘, ‘nanan‘, ‘banan‘, ‘shapingba‘, ‘jiulongpo‘, ‘yuzhong‘, ‘dadukou‘, ‘jiangjing‘, ‘fuling‘,
             ‘wanzhou‘, ‘hechuang‘, ‘bishan‘, ‘changshou1‘, ‘tongliang‘, ‘beibei‘]
    for region in regions:
        for i in range(1, offset):
            url = ‘https://cq.lianjia.com/ershoufang/‘ + region + ‘/pg‘+ str(i) + ‘/‘
            html = parse_one_page(url)
            time.sleep(1)     print(‘{} has been writen.‘.format(region))
main(101)

链家网站的数据最多只显示100页,所以这里我们爬取各个区域的前100页信息,有的可能没有100页,但并不影响,爬取结果如下(已经对数据做了一点处理,有问题的数据出现在有无电梯那一列和小区名那一列,只要排个序然后整体移动单元内容即可,年份缺失后面再做处理):

接下来,我们用Excel的数据透视表简单看一下数据的数量信息:

从表中我们可以看到,此次共爬取了33225条数据,Elevator这一项有很多数据缺失,Year这一项由于在爬虫时使用空格代替了空值,所以这一项也存在一些数据缺失。现在有了数据,后面就可以开始对这些数据进行分析了。

参考书籍:

[1] https://germey.gitbooks.io/python3webspider/content/

原文地址:https://www.cnblogs.com/yunxiaofei/p/10946951.html

时间: 2024-10-12 03:15:51

Python爬取链家二手房数据——重庆地区的相关文章

爬取链家任意城市二手房数据(天津)

1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Time : 2019-08-16 12:40 4 # @Author : Anthony 5 # @Email : [email protected] 6 # @File : 爬取链家任意城市二手房数据.py 7 8 9 import requests 10 from lxml import etree 11 import time 12 import xlrd 13 import o

python爬虫:爬取链家深圳全部二手房的详细信息

1.问题描述: 爬取链家深圳全部二手房的详细信息,并将爬取的数据存储到CSV文件中 2.思路分析: (1)目标网址:https://sz.lianjia.com/ershoufang/ (2)代码结构: class LianjiaSpider(object): def __init__(self): def getMaxPage(self, url): # 获取maxPage def parsePage(self, url): # 解析每个page,获取每个huose的Link def pars

Python爬虫项目--爬取链家热门城市新房

本次实战是利用爬虫爬取链家的新房(声明: 内容仅用于学习交流, 请勿用作商业用途) 环境 win8, python 3.7, pycharm 正文 1. 目标网站分析 通过分析, 找出相关url, 确定请求方式, 是否存在js加密等. 2. 新建scrapy项目 1. 在cmd命令行窗口中输入以下命令, 创建lianjia项目 scrapy startproject lianjia 2. 在cmd中进入lianjia文件中, 创建Spider文件 cd lianjia scrapy genspi

爬取链家任意城市租房数据(北京朝阳)

1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Time : 2019-08-16 15:56 4 # @Author : Anthony 5 # @Email : [email protected] 6 # @File : 爬取链家任意城市租房数据.py 7 8 9 import requests 10 from lxml import etree 11 import time 12 import xlrd 13 import os

Python的scrapy之爬取链家网房价信息并保存到本地

因为有在北京租房的打算,于是上网浏览了一下链家网站的房价,想将他们爬取下来,并保存到本地. 先看链家网的源码..房价信息 都保存在 ul 下的li 里面 ? 爬虫结构: ? 其中封装了一个数据库处理模块,还有一个user-agent池.. 先看mylianjia.py # -*- coding: utf-8 -*- import scrapy from ..items import LianjiaItem from scrapy.http import Request from parsel i

43.scrapy爬取链家网站二手房信息-1

首先分析:目的:采集链家网站二手房数据1.先分析一下二手房主界面信息,显示情况如下: url = https://gz.lianjia.com/ershoufang/pg1/显示总数据量为27589套,但是页面只给返回100页的数据,每页30条数据,也就是只给返回3000条数据. 2.再看一下筛选条件的情况: 100万以下(775):https://gz.lianjia.com/ershoufang/pg1p1/(p1是筛选条件参数,pg1是页面参数) 页面返回26页信息100万-120万(47

python爬取安居客二手房网站数据(转)

之前没课的时候写过安居客的爬虫,但那也是小打小闹,那这次呢, 还是小打小闹 哈哈,现在开始正式进行爬虫书写 首先,需要分析一下要爬取的网站的结构: 作为一名河南的学生,那就看看郑州的二手房信息吧! 在上面这个页面中,我们可以看到一条条的房源信息,从中我们发现了什么,发现了连郑州的二手房都是这么的贵,作为即将毕业的学生狗惹不起啊惹不起 还是正文吧!!! 由上可以看到网页一条条的房源信息,点击进去后就会发现: 房源的详细信息. OK!那么我们要干嘛呢,就是把郑州这个地区的二手房房源信息都能拿到手,可

利用python爬取58同城简历数据

最近接到一个工作,需要获取58同城上面的简历信息(http://gz.58.com/qzyewu/).最开始想到是用python里面的scrapy框架制作爬虫.但是在制作的时候,发现内容不能被存储在本地变量 response 中.当我通过shell载入网页后,虽然内容能被储存在response中,用xpath对我需要的数据进行获取时,返回的都是空值.考虑到数据都在源码中,于是我使用python里的beautifulSoup通过下载源码的方式去获取数据,然后插入到数据库. 需要的python包ur

Python爬取全国历史天气数据

1.通过爬取历史首页,来获取城市地址和历史时间,构建链接: ''' 获取全国的城市名称和链接 ''' import requests from lxml import etree import random import pymongo from time_list import get_time client = pymongo.MongoClient('localhost',27017) tianqi_data = client['tianqi_data'] time_url_table =