链家网页爬虫_分享最近做的一个链家二手房爬虫和对爬到的数据进行可视化分析的案例...
本帖最后由 super謙 于 2020-12-4 10:29 編輯
# 爬蟲部分
# 導(dǎo)入必要的包
from bs4 import BeautifulSoup
import pandas as pd
from tqdm import tqdm
import math
import requests
import lxml
import re
import time
# 構(gòu)造url字典
area_dic = {#'羅湖區(qū)':'luohuqu',
#'福田區(qū)':'futianqu',
'南山區(qū)':'nanshanqu',
#'鹽田區(qū)':'yantianqu',
#'寶安區(qū)':'baoanqu',
#'龍崗區(qū)':'longgangqu',
#'龍華區(qū)':'longhuaqu',
#'坪山區(qū)':'pingshanqu'
}
# 當(dāng)正則表達(dá)式匹配失敗時,返回默認(rèn)值(errif)
def re_match(re_pattern, string, errif=None):
try:
return re.findall(re_pattern, string)[0].strip()
except IndexError:
return errif
# 主函數(shù)部分,
# 通過request獲取源碼,
# 通過正則表達(dá)式提取相應(yīng)的字段,
# 通過BeautifulSoup包獲取房子的信息,
# DataFrame存儲信息
data = pd.DataFrame()
for key_, value_ in area_dic.items():
# 加個header進(jìn)行偽裝
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{}/'
# 獲取該行政區(qū)下房源記錄數(shù)
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)
# 頁面限制 每個行政區(qū)只能獲取最多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 = {}
# 行政區(qū)
info_dic['area'] = key_
# 房源的標(biāo)題
info_dic['title'] = re_match('target="_blank">(.*?)
總結(jié)
以上是生活随笔為你收集整理的链家网页爬虫_分享最近做的一个链家二手房爬虫和对爬到的数据进行可视化分析的案例...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何通过三视图判断立方体个数_中考难点,
- 下一篇: 前端传来的图片并保存_前端处理后端接口传