1. 程式人生 > >爬蟲實戰:從鏈家網爬取資料

爬蟲實戰:從鏈家網爬取資料

      學習python已經很久了,從各個大牛的技術部落格中獲益良多。現在也想把自己的小小收穫公開一下,以方便大家學習python,讓python更加普及的應用。下面我準備寫一個爬蟲例項:從鏈家網爬取福田區二手房的資料。

環境:

win10專業版
python3.6(需要使用模組BeatifulSoup;pandas;Selector;time;re)
Office2013

背景知識:

Xpath的使用
pandas的使用
request的使用

    python爬蟲能力大致分為三個層次:第一個層次就是靜態網頁的爬取;第二個層次就是非同步載入的網頁資料的爬取;第三個層次使用加密請求資料的網站資料爬取(使用selenium)。

    今天我們的任務是非常簡單的爬取靜態網站資料。要爬取的是2017年10月24日的鏈家網福田區二手房掛牌房源資料(圖片擷取是為了讓大家看清網頁機構並不是當天擷取)。鏈家網的資料爬取非常簡單,步驟如下:


一、觀察網站地址和不同頁碼的網址變化,得到目標網頁100頁的網址列表;編寫request請求的頭部資訊(讓對方知道你是一個瀏覽器);最好加入代理ip地址;

我們開啟第二頁的目標網址是:https://sz.lianjia.com/ershoufang/futianqu/pg2/
所以我們可以判斷pg後面就是頁碼的數字。

二、製作一個空表格;

三、編寫函式將每一頁的資訊都爬取下來變成表格(使用Selector的xpath定位資訊);

四、使用迴圈將所有頁面上的房源資訊(房屋介紹的文字資訊;房屋編號;圖片地址)寫入空的表格。

#coding=utf-8
from bs4 import BeautifulSoup
import re
import requests
from parsel import Selector
import pandas as pd
import time
#############################################################
'''
這個模組爬取鏈家網福田區的二手房資訊;僅僅爬取了前100頁的資料
為了避免反爬蟲策略,設定每5秒鐘抓取一頁資訊
@time=2017-10-24
@author=wq

'''

###########################################################
# 進行網路請求的瀏覽器頭部
 headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 BIDUBrowser/8.7 Safari/537.36'

}
# pages是不同頁碼的網址列表
pages=['https://sz.lianjia.com/ershoufang/futianqu/pg{}/'.format(x) for x in range(1,100)]
############################################################

#############################################################
lj_futian = pd.DataFrame(columns=['code','dec','img'])
count=0
def l_par_html(url):
    # 這個函式是用來獲取鏈家網福田區二手房的資訊
    wr=requests.get(url,headers=headers,stream=True)
    sel=Selector(wr.text)
    # describ用來獲取房源的文字資訊
    describ=sel.xpath('//li[@class="clear"]//text()').extract()
    new_information=([x for x in describ if x != '關注'and x != '加入對比' ])
    sep_infor=' '.join(new_information).split(r'/平米')[:-1]
    # hou_code用來獲取房源的編號
    hou_code=sel.xpath('//li[@class="clear"]/a/@data-housecode').extract()
    # hou_image用來獲取房源的圖片
    hou_image=sel.xpath('//li[@class="clear"]/a/img/@data-original').extract()
    # 將資訊形成表格全部寫到一起
    pages_info=pd.DataFrame(list(zip(hou_code,sep_infor,hou_image)),columns=['code','dec','img'])
    return pages_info

for page in pages:
    a=l_par_html(page)
    count=count+1
    print ('the '+str(count)+' page is sucessful')
    time.sleep(5)
    lj_futian=pd.concat([lj_futian,a],ignore_index=True)

# 將表格資料輸出到excel檔案
lj_futian.to_excel('d:\\lianjia_ershou_futian_100.xlsx')
  


  同樣,改動一下網址和excel檔案地址,你可以繼續抓取深圳每個區的二手房資料。為了簡單例項我只使用了福田區的二手房資料。大家可以看到,抓取的資料全部集中到三列中。
      可以從表格中看到抓取的資訊是非結構化的資料,不能直接split然後取值。需要使用正則進行抓取,我會在下一章將資料清理拆分到可以仔細分析的粒度。
    各位,有疑問的或者提出改進意見的,請留言或者發郵件[email protected]!
謝謝!

相關推薦

爬蟲實戰資料

      學習python已經很久了,從各個大牛的技術部落格中獲益良多。現在也想把自己的小小收穫公開一下,以方便大家學習python,讓python更加普及的應用。下面我準備寫一個爬蟲例項:從鏈家網爬取福田區二手房的資料。 環境: win10專業版 python3.6(需

另類爬蟲PDF檔案中表格資料

簡介   本文將展示一個稍微不一樣點的爬蟲。   以往我們的爬蟲都是從網路上爬取資料,因為網頁一般用HTML,CSS,JavaScript程式碼寫成,因此,有大量成熟的技術來爬取網頁中的各種資料。這次,我們需要爬取的文件為PDF檔案。本文將展示如何利用Python的camelot模組

利用Python爬蟲和Tableau分析二手房資訊

1、明確分析的目標和思路 目的:近年來,房價時時刻刻牽動著廣大老百姓的心,尤其是急需買房的剛需族和二胎家庭的置換族。本文希望通過對上海市中心城區二手房資訊的分析,能夠對房價和地理位置、房齡等因素的關係有一定的掌握。 分析思路:通過python爬取鏈家網二手房資訊,經過資料

二手房資料分析(承接上篇爬蟲

import pandas as pd import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei']#用來正常顯示中文標籤 path=

Python爬蟲實戰之Requests+正則表示式貓眼電影Top100

import requests from requests.exceptions import RequestException import re import json # from multiprocessing import Pool # 測試了下 這裡需要自己新增頭部 否則得不到網頁 hea

python爬蟲"Hello World"級入門例項(二),使用json中國天氣資料

一、二話不說先上程式碼 python2.7版 #!/usr/bin/python2.7 #-*- coding=UTF-8 -*- import urllib import json def get_dic(url): page = urll

爬蟲實戰(一)——利用scrapy豆瓣華語電影

爬蟲第一個專案是爬取豆瓣華語電影,後面將對這部分資料進行分析。 本文也是發表於『運籌OR帷幄』微信公眾號的《用資料帶你瞭解電影行業—華語篇》的爬蟲介紹篇。 1. 爬取思路 在觀察了豆瓣每個影片的連結地址後,寫下了主要思路: (1)在豆瓣電影的選片頁面,篩選所有華

BeautifulSoup4房源資訊

from bs4 import BeautifulSoup import pymysql import requests # 資料庫儲存 class Mysql_save(object): def __init__(self): sel

python 爬蟲實戰(三)使用pyspider虎嗅新聞

#!/usr/bin/env python # -*- encoding: utf-8 -*- # Created on 2018-03-02 23:14:26 # Project: huxiu fr

python網路爬蟲例項Requests+正則表示式貓眼電影TOP100榜

一、前言 最近在看崔慶才先生編寫的《Python3網路爬蟲開發實戰》這本書,學習了requests庫和正則表示式,爬取貓眼電影top100榜單是這本書的第一個例項,主要目的是要掌握requests庫和正則表示式在實際案例中的使用。 二、開發環境 執行平

Python爬蟲-利用百度地圖API介面資料並儲存至MySQL資料庫

首先,我這裡有一份相關城市以及該城市的公園數量的txt檔案: 其次,利用百度地圖API提供的介面爬取城市公園的相關資訊。 所利用的API介面有兩個: 1、http://api.map.baidu.com/place/v2/search?q=公園&

環境雲網站資料

1、環境雲網站:http://www.envicloud.cn/網站中包含全國各地關於環境方面的資料,我們這次只讀取了廣東省24小時天氣歷史資料。 2、關於介面參考環境雲幫助頁面 3、程式碼使用python語言實現 4、爬取需要key,免費申請 5、爬取後的資料儲存在ora

java中高德地圖資料

    最近一個人負責公司的一個app專案開發,需要從高德地圖爬取杭州市全部的超市資訊,放入mongodb的資料庫中。做地理位置查詢。(mongodb這部分有時間補上)    首先去高德地圖建立一個開發者賬號,獲取一個開發web服務的高德key.這個是必須要有的,可以用我

爬蟲入門講解(用urllib庫資料

首先介紹說明什麼是爬蟲? 是一種按照一定的規則,自動地抓取網際網路資訊的程式或者指令碼。  所謂網頁抓取,就是把URL地址中指定的網路資源從網路流中讀取出來,儲存到本地。 在 Python中有很多庫可以用來抓取網頁  爬蟲分類  通用爬蟲(General Purpose

初識Scrapy框架+爬蟲實戰(7)-100頁租房資訊

Scrapy簡介 Scrapy,Python開發的一個快速、高層次的螢幕抓取和web抓取框架,用於抓取web站點並從頁面中提取結構化的資料。Scrapy用途廣泛,可以用於資料探勘、監測和自動化測試。Scrapy吸引人的地方在於它是一個框架,任何人都可以根

python 學習 - 爬蟲入門練習 二手房資訊

import requests from bs4 import BeautifulSoup import sqlite3 conn = sqlite3.connect("test.db") c = conn.cursor() for num in range(1,101): url = "h

資料採集(四)用XPath房價資料

準備工作 編寫爬蟲前的準備工作,我們需要匯入用到的庫,這裡主要使用的是requests和lxml兩個。還有一個Time庫,負責設定每次抓取的休息時間。 import requests import requests import time from lxml

scrapy實戰(一)-------------的二手房資訊

主要是通過scrapy爬取二手房相關資訊,只關心ershoufang相關連結,原始碼地址: 程式碼更新: 1.增加了爬取已成交房產的資訊,用於做為目標樣本來預測未成交房屋的價格。 2.資料通過pip

爬蟲北京二手房資訊

# 鏈家網二手房資訊爬取 import re import time import requests import pandas as pd from bs4 import BeautifulSoup url = 'http://bj.lianjia.com/ershouf

Python3爬蟲實戰大眾點評某地區所有酒店相關資訊

歷時一下午加一晚上,終於把這個爬蟲程式碼寫好,後面還有很多想完善的地方(譬如資料儲存用redis、使用多執行緒加快速度、爬取圖片、細分資料等等),待有空再做更改,下面是具體的步驟與思路: 工具:PyC