互金产品101

本文主要内容:使用Python爬取链家网二手房数据,并对爬取数据进行清洗。

特别说明:本文程序模仿了知乎网友半砚墨

数据爬取

第一步,导入所需模块。requests用于信息抓取,time用于设置每次抓取的休息时间,BeautifulSoup用于页面解析,pandas用于数据处理。

1
2
3
4
import requests
import time
from bs4 import BeautifulSoup
import pandas as pd

第二步,设置头部信息,将爬虫伪装成正常请求。由于链家网反爬机制的升级,一定要将User-Agent替换成浏览器标识。

1
2
3
4
5
6
7
8
headers = {
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36",
'Accept':'application/json, text/javascript, */*; q=0.01',
'Accept-Encoding':'gzip, deflate, br',
'Accept-Language':'zh-CN,zh;q=0.8',
'Connection':'keep-alive',
'Referer':'http://www.baidu.com/link?url=_andhfsjjjKRgEWkj7i9cFmYYGsisrnm2A-TN3XZDQXxvGsM9k9ZZSnikW2Yds4s&wd=&eqid=c3435a7d00006bd600000003582bfd1f'
}

第三步,抓取网页信息。观察目标网页的URL结构,可发现其由固定部分(http://nt.lianjia.com/ershoufang/pg) 和页码组成。因此,我们使用for循环构造要请求的URL,并对目标网页进行爬取和解析。

1
2
3
4
5
6
for i in range(1,101): 
url = 'http://nt.lianjia.com/ershoufang/pg'+str(i)+"/"
res = requests.get(url=url,headers=headers)
html = res.text
time.sleep(0.7)
lj = BeautifulSoup(html,'html.parser')

第四步,解析页面信息。首先,新建4个空列表,用于后期插入数据。然后,使用开发者工具查看目标信息所处的位置,提取这些信息,并将其插入列表。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
tpc = []
loc = []
hio = []
fio = []

#提取价格信息
price = lj.find_all("div",attrs={"class":"priceInfo"})
for p in price:
totalPrice = p.span.string
tpc.append(totalPrice)

#提取位置信息
price = lj.find_all("div",attrs={"class":"positionInfo"})
for l in price:
location = l.get_text()
loc.append(location)

#提取房源信息
houseInfo = lj.find_all("div",attrs={"class":"houseInfo"})
for h in houseInfo:
house = h.get_text()
hio.append(house)

#提取关注度信息
followInfo = lj.find_all("div",attrs={"class":"followInfo"})
for f in followInfo:
follow = f.get_text()
fio.append(follow)

第五步,将数据传入pandas数据框,并将其导出为Excel文件。

1
2
house = pd.DataFrame({"totalprice":tpc,"location":loc,"houseinfo":hio,"followinfo":fio})
house.to_excel("RawData.xlsx")
图1 原始数据

数据处理

数据处理主要有三个步骤:一是使用Excel的“文本分列功能”(数据->分列),将混同在一列的数据分列;二是使用Python,插入二手房区块所属的行政区域;三是剔除错误数据和极端数据,并调整数据格式。

图2 处理后的数据

 评论