恒基中心国际公寓-紫金矿业股票601988今日行情

python爬取上海链家网二手房数据
2023年9月6日发(作者:诸葛生)

python爬取上海链家⽹⼆⼿房数据

1、数据爬取说明

1.1 爬取⽬的

⼀个朋友在学习⾃考,作业是爬取数据进⾏数据分析,正好最近我在学习python,所以他委托我帮他完成这⼀⼯作

1.2使⽤模块

requests进⾏⽹络请求、bs4进⾏数据解析、xlwt进⾏excel表格存储

2、⽹页结构分析

2.1 ⾸页分析,获取数据

# 指定爬⾍所需的上海各个区域名称

citys = ['pudongxinqu','minhang','baoshan','xuhui','putuo','yangpu','changning','songjiang',

'jiading','huangpu','jinan','zhabei','hongkou','qingpu','fengxian','jinshan','chongming','shanghaizhoubian']

def getHtml(city):

url = '/ershoufang/%s/' % city

headers = {

'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'

}

request = (url=url,headers=headers)

# 获取源码内容⽐好,对编码⽅式优化好

respons = t

# 使⽤bs4模块,对响应的链接源代码进⾏html解析,后⾯是python内嵌的解释器,也可以安装使⽤lxml解析器

soup = BeautifulSoup(respons,'')

# 获取类名为c-paginationdiv标签,是⼀个列表

page = ('div .c-pagination')[0]

# 如果标签a标签数⼤于1,说明多页,取出最后的⼀个页码,也就是总页数

if len(('a')) > 1:

alist = int(('a')[-2].text)

else:#否则直接取出总页数

alist = int(('span')[0].text)

saveData(city,url,alist+1)

2.3 选中⼀页查看页⾯链接规律

请求页⾯具体数据,数据结构

3.总代码

我⽤的是python2.7进⾏爬取的,不确定在python3之后的运⾏有没有问题,建议python2版本进⾏尝试

#_*_coding:utf-8_*_

# 导⼊开发模块

import requests

# ⽤于解析html数据的框架

from bs4 import BeautifulSoup

# ⽤于操作excel的框架

import xlwt

# 创建⼀个⼯作

book = ok()

# 向表格中增加⼀个sheet表,sheet1为表格名称 允许单元格覆盖

sheet = _sheet('sheet1', cell_overwrite_ok=True)

# 指定爬⾍所需的上海各个区域名称

citys = ['pudongxinqu','minhang','baoshan','xuhui','putuo','yangpu','changning','songjiang',

'jiading','huangpu','jinan','zhabei','hongkou','qingpu','fengxian','jinshan','chongming','shanghaizhoubian']

def getHtml(city):

url = '/ershoufang/%s/' % city

headers = {

'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'

}

request = (url=url,headers=headers)

# 获取源码内容⽐好,对编码⽅式优化好

respons = t

# 使⽤bs4模块,对响应的链接源代码进⾏html解析,后⾯是python内嵌的解释器,也可以安装使⽤lxml解析器

soup = BeautifulSoup(respons,'')

# 获取类名为c-paginationdiv标签,是⼀个列表

page = ('div .c-pagination')[0]

# 如果标签a标签数⼤于1,说明多页,取出最后的⼀个页码,也就是总页数

if len(('a')) > 1:

alist = int(('a')[-2].text)

else:#否则直接取出总页数

alist = int(('span')[0].text)

# 调⽤⽅法解析每页数据

saveData(city,url,alist+1)

# for i in range(1,alist + 1):

# urlStr = '%sd%s' % (url,i)

region = fangL[2].split('/')[0].strip() # 每套⼆⼿房所属的区域

loucheng = fangL[2].split('/')[1].strip() # 每套⼆⼿房所在的楼层

else:

region = '' # 每套⼆⼿房所属的区域

loucheng = fangL[2].strip() # 每套⼆⼿房所在的楼层

if len(fangL) != 4:

chaoxiang = '*'

else:

chaoxiang = fangL[3].strip() # 每套⼆⼿房的朝向

timeStr = ('span',class_='info-col row2-text').contents[-1].strip().lstrip('|')

builtdate = timeStr # 每套⼆⼿房的建筑时间

# 每套⼆⼿房的总价

price = ('span',class_='total-price strong-num').()+u''

# 每套⼆⼿房的平⽅⽶售价

jun = ('span',class_='info-col price-item minor').text

price_union = ()

# ⼀定要声明使⽤全局的row变量,否则会报错,说定义前使⽤了该变量

global row

# 把数据写⼊表中,row:⾏数 第⼆个参数:第⼏列 第三个参数:写⼊的内容

(row,0,des)

(row,1,name)

(row,2,room_type)

(row,3,size)

(row,4,region)

(row,5,loucheng)

(row,6,chaoxiang)

欧尼尔-金鑫科技股票行情

python爬取上海链家网二手房数据

更多推荐

师宗二手房网