链家网页爬虫_分享最近做的一个链家二手房爬虫和对爬到的数据进行可视化分析的案例...

本文介绍了一个使用Python爬取链家网站二手房信息的案例,详细讲解了爬虫部分,包括如何构造URL、伪装请求头、解析HTML以及提取关键数据。还提到了数据的正则匹配和BeautifulSoup库的运用。此外,文章还暗示了后续会对爬取到的数据进行可视化分析。
摘要由CSDN通过智能技术生成

本帖最后由 super谦 于 2020-12-4 10:29 编辑

# 爬虫部分

# 导入必要的包

from bs4 import BeautifulSoup

import pandas as pd

from tqdm import tqdm

import math

import requests

import lxml

import re

import time

# 构造url字典

area_dic = {#'罗湖区':'luohuqu',

#'福田区':'futianqu',

'南山区':'nanshanqu',

#'盐田区':'yantianqu',

#'宝安区':'baoanqu',

#'龙岗区':'longgangqu',

#'龙华区':'longhuaqu',

#'坪山区':'pingshanqu'

}

# 当正则表达式匹配失败时,返回默认值(errif)

def re_match(re_pattern, string, errif=None):

try:

return re.findall(re_pattern, string)[0].strip()

except IndexError:

return errif

# 主函数部分,

# 通过request获取源码,

# 通过正则表达式提取相应的字段,

# 通过BeautifulSoup包获取房子的信息,

# DataFrame存储信息

data = pd.DataFrame()

for key_, value_ in area_dic.items():

# 加个header进行伪装

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36',

'Referer': 'https://sz.lianjia.com/ershoufang/'}

# 新建一个会话

sess = requests.session()

sess.get('https://sz.lianjia.com/ershoufang/', headers=headers)

# url示例:https://sz.lianjia.com/ershoufang/luohuqu/pg2/

url = 'https://sz.lianjia.com/ershoufang/{}/pg{}/'

# 获取该行政区下房源记录数

start_url = 'https://sz.lianjia.com/ershoufang/{}/'.format(value_)

html = sess.get(start_url).text

# print(html[:100])

print(re.findall('共找到 (.*?) 套.*二手房', html))

house_num = re.findall('共找到 (.*?) 套.*二手房', html)[0].strip()

print('{}: 二手房源共计{}套'.format(key_, house_num))

time.sleep(1)

# 页面限制 每个行政区只能获取最多100页共计3000条房源信息

total_page = int(math.ceil(min(3000, int(house_num)) / 30.0))

for i in tqdm(range(total_page), desc=key_):

html = sess.get(url.format(value_, i+1)).text

soup = BeautifulSoup(html, 'lxml')

info_collect = soup.find_all(class_="info clear")

for info in info_collect:

info_dic = {}

# 行政区

info_dic['area'] = key_

# 房源的标题

info_dic['title'] = re_match('target="_blank">(.*?)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值