赞
踩
本文主要使用Python对链家网广州二手房信息进行数据抓取,并从中提取二手房价格、面积、户型和二手房关注度等数据,然后对提取的数据进行相应的数据分析与及对二手房进行分群聚类。
数据获取
网页分析
网页源代码
由上图可知,我们需要的数据都在网页源代码中,所以不需要抓包对网页进行分析。
提取网页中的特定信息
伪装浏览器
#-*- coding:utf-8 -*-
import urllib.request
from bs4 import BeautifulSoup
import pandas as pd
def Disguise():
'''伪装浏览器访问'''
header = ('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36')
#@伪装浏览器
opener = urllib.request.build_opener()
opener.addheaders = [header]
#将伪装浏览器设为全局,这样在后续对网页的访问就可以直接使用urlopen
urllib.request.install_opener(opener)
获取网页的内容
def Get_page(url,num):
'''@获取网页内容'''
try:
#获取网页的内容,并使用BeautifulSoup解析以便后面的信息提取
page = urllib.request.urlopen(url).read()
soup = BeautifulSoup(page, 'lxml')
print('--------第%d页抓取成功--------'%num)
return soup
except urllib.request.URLError as e:
if hasattr(e,'code'):
print('错误原因:',e.code)
if hasattr(e,'reason'):
print('错误原因:',e.reason)
提取网页中的信息
这里我们使用python3中BeautifulSoup4模块对网页中的信息进行提取。由于要提取的信息都是以‘|‘或’‘/’相互连接在一起,所以提取的时候需要对信息进行相应的分割。
def Get_House_info(page):
'''@提取网页中的房子信息,并把信息以DataFrame的形式返回'''
item = {}
item['house_name'] = [i.get_text().strip().split('|')[0] for i in page.select('
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。