当前位置: 首页 > news >正文

Python案例题目,入门小白题

1.抓取链家前十页的数据

链家网址:长沙房产网_长沙房地产_长沙房产门户(长沙链家网)

1.1.计算均价和总价

import time
​
from selenium import webdriver
from selenium.webdriver.common.by import By
​
driver = webdriver.Chrome()
driver.get("https://cs.lianjia.com/zufang/rs岳麓区/")
​
# 总价
total = 0
# 记录房间个数
size = 0
​
for i in range(2):elements = driver.find_elements(By.CSS_SELECTOR, '.content__list--item--main')print(f"第{i+1}页的数据:")for el in elements:# 获取租房标题name = el.find_element(By.CSS_SELECTOR, '.content__list--item--title a').text# 判断是否包含独栋信息if name.__contains__("独栋"):continue# 获取租房的价格price = el.find_element(By.CSS_SELECTOR, '.content__list--item-price em').textprint(f"name={name},price={price}")total += float(price)# 记录房间的个数size += len(elements)# 点击下一页driver.find_element(By.CSS_SELECTOR,'a.next').click()# 模拟睡眠6秒time.sleep(2)
​
print(f"总价:{total},岳麓区的租房均价为:{total/size}")

1.2.计算的类型(整租,合租)

str = """
name=整租·万科里金域国际 4室2厅 南,price=4500
name=独栋·魔方公寓 长沙航天溪湖店 连锁公寓直租无中介费 1室1厅,price=1800
name=整租·潇湘奥林匹克花园 1室1厅 南,price=2200
name=合租·达美美立方 5居室 复式 南卧,price=999
name=整租·万科里金域国际 3室2厅 南,price=3400
"""
# 计算的类型(整租,合租)
print("整租:", str.count("整租"))
print("合租:", str.count("合租"))

1.3.计算的房型

由于在爬取的数据中存在“居室”“室”的区别,所以请将所有的“居室”数据替换成“室”

str = """
name=整租·万科里金域国际 4室2厅 南,price=4500
name=独栋·魔方公寓 长沙航天溪湖店 连锁公寓直租无中介费 1室1厅,price=1800
name=整租·潇湘奥林匹克花园 1室1厅 南,price=2200
name=合租·达美美立方 5居室 复式 南卧,price=999
name=整租·万科里金域国际 3室2厅 南,price=3400
"""
import re
import collections
st = str.replace('居室','室')
rs = re.findall(r'\d室',st)
print(rs)
print(collections.Counter(rs))

2.抓取boss直聘前十页的数据

boss直聘网址:「北京招聘网」海量北京人才招聘信息 - BOSS直聘

2.1.抓取boss直聘前十页的数据

其中参数city=101020100是中国天气网全城市代码weather_cityId

from selenium import webdriver
from selenium.webdriver.common.by import By
import time 
​
driver = webdriver.Chrome()
driver.get("https://www.zhipin.com/web/geek/job?query=java&city=101020100")
​
jobs = []
​
for i in range(3):time.sleep(6)elements = driver.find_elements(By.CSS_SELECTOR, ".job-card-wrapper")for el in elements:# 获取地区area = el.find_element(By.CSS_SELECTOR,"span.job-area").text# 获取薪酬salary = el.find_element(By.CSS_SELECTOR,"span.salary").textprint(f"area={area},salary={salary}")jobs.append({'area':area,'salary':salary})driver.find_element(By.CSS_SELECTOR,".selected+a").click()
​
print(jobs)

2.2.将获取数据本地序列化

Python的pickle模块是一种用于序列化(将对象转换为字节流)和反序列化(将字节流转换回对象)Python对象的工具。它可以将Python对象保存到文件中或从文件中加载对象。

pickle模块还有其他一些有用的函数和特性。以下是一些常见的功能:

  • pickle.dumps(obj):将对象序列化为字节流,但不保存到文件中。

  • pickle.loads(bytes_obj):从字节流中加载对象,而不是从文件中加载。

  • pickle.dump(obj, file):将对象序列化并保存到文件中。

  • pickle.load(file):从文件中加载序列化的对象。

# 将获取到的结果保存到本地
p = Path("jobs.txt")
p.touch()
# 通过pickle.dump实现数据序列化
pickle.dump(jobs,p.open(mode="wb"))

2.3.计算每个区的需求个数与均价

# 计算每个区的需求个数与均价
jobs = pickle.load(open('jobs.txt',mode="rb"))
print(jobs)
areas=list(map(lambda a: "".join(re.findall(r'.*?·(.*?)·.*?',a['area'])),jobs))
print(areas)
import collections
rs = collections.Counter(areas)
​
for k,v in rs.items():print(f"【{k}】的工作岗位需求数:{v}")# 获取该区的工作集合ps = list(filter(lambda e: e['area'].count(k) > 0, jobs))# 获取该区的薪酬总价total = functools.reduce(lambda a,b:a+int(b['salary'].split('-')[0]),ps,0)print(f"该区的工作入门平均薪酬:{total/len(ps)}")

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 安卓分身大师4.6.0解锁会员安卓14可用机型伪装双开多开
  • Git使用笔记
  • 蓝桥杯杨辉三角
  • 安卓手机APP开发__近距离无线通信(NFC)概述
  • WordPress Country State City Dropdown CF7插件 SQL注入漏洞复现(CVE-2024-3495)
  • 12秒窃走2500万美元加密货币,麻省理工毕业的黑客两兄弟被捕
  • 【杂七杂八】Huawei Gt runner手表系统降级
  • DOS学习-目录与文件应用操作经典案例-type
  • C# Winform实现五子棋游戏(代完善)
  • 栈——顺序存储
  • 【数据结构】【C语言】堆~动画超详细解读!
  • java解析json复杂数据补充
  • CSS伪类实现input聚焦时,上层div样式改变
  • 如何跨过robots协议的限制爬取内容?
  • 设计模式9——适配器模式
  • android 一些 utils
  • AngularJS指令开发(1)——参数详解
  • Apache Spark Streaming 使用实例
  • leetcode98. Validate Binary Search Tree
  • linux学习笔记
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • python docx文档转html页面
  • Python学习之路16-使用API
  • Quartz初级教程
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • Yii源码解读-服务定位器(Service Locator)
  • 百度地图API标注+时间轴组件
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 正则与JS中的正则
  • C# - 为值类型重定义相等性
  • #pragma once与条件编译
  • (12)目标检测_SSD基于pytorch搭建代码
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (定时器/计数器)中断系统(详解与使用)
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (六)DockerCompose安装与配置
  • (每日一问)计算机网络:浏览器输入一个地址到跳出网页这个过程中发生了哪些事情?(废话少说版)
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • (转)重识new
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET 项目中发送电子邮件异步处理和错误机制的解决方案
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .net下的富文本编辑器FCKeditor的配置方法
  • .NET中统一的存储过程调用方法(收藏)
  • .py文件应该怎样打开?
  • :O)修改linux硬件时间
  • @拔赤:Web前端开发十日谈
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • []AT 指令 收发短信和GPRS上网 SIM508/548
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)