python爬虫requests源码链家_Python 爬虫 链家二手房(自行输入城市爬取)

2023-10-27

因同事想在沈阳买房,对比分析沈阳各区的房价,让我帮忙爬取一下链家网相关数据,然后打 算记下笔记 用于总结学到的东西&用到的东西。

一.爬虫需要会什么?

学习东西 首先你要知道它是干嘛的。爬虫 顾名思义就是爬取你所看到的网页内容 小说/新闻/信息等。而网页相关的也就是 HTML 学过网页的最清楚不过了。 HTML(超文本标记语言) 用各种标签来识别内容,浏览器会翻译成所看到的网页页面,HTML只是个基础 展示的只是静态的网页(也就是不会动的陈列好的网页) 还需要美化的CSS 和 实现动态的JavaScipt。想学习的可以 参考 HTML 基础 | 菜鸟教程。做爬虫也不需要了解学习很多,只需要了解HTML是基于文档对象模型(DOM)的,以树的结构,存储各种标记。

接下来 就是python(我用的是python3.6) 中 爬虫相关的辅助库

Requests库 比较好用的HTTP库

BeautifulSoup库 优秀的HTML/XML解析库,采用来做爬虫 该库解析时需要个解析器 lxml

辅助的还有很多 由于本文只用到这两个 同时这两个基本足够了,有兴趣的可以百度学习别的。

二.爬虫实例(链家二手房):

1.URL(统一资源定位符 也称为网页地址):链家二手房

像标题所言 自行输入城市 并不是所有的爬虫都通用 要找到每个url 之间的规律,如下

很明显可以看出规律 https:// + city + .lianjia.com/ershoufang/pg +页码+/

由于 基本最多页码就100页 也就不需要自己输入页码(在程序中循环替换页码) 故笔记中 url则为

单页url:

a=1

url ='http://' + user_in_city +'.lianjia.com/ershoufang/pg{}/'

url1.url.format(a)

(或者直接写)

url ='http://' + user_in_city +'.lianjia.com/ershoufang/pg1/'

循环url:

user_in_city='sy'

url ='http://' + user_in_city +'.lianjia.com/ershoufang/pg{}/'

for a in range(1, 101):

url1 = url.format(a)

print(url1)

2.Request

我们可以requests.get(url) 来 Get该网页从而获取该html内容

import requests

url = 'http://sy.lianjia.com/ershoufang/pg1/'

page = requests.get(url)

print(page)

但是实践以后该网站会报错 403 服务器拒绝访问

这就需要我们添加headers 模仿浏览器访问,就变成下面代码

header = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36'}

page = requests.get(url1, headers=header)

a=page.text

print(a)

640daaaa0946

网页HTML.png

3.BeautifulSoup

BeautifulSoup 作为优秀的HTML/XML解析库 方便又简单

640daaaa0946

代码.png

如上图所见,点击小红色框框的三角 选中网页上的模块,阴影部分会自动跳到该模块的标签位置(大红色框框)可以把该部分的标签粘贴到本地 方便查看。

import requests

from bs4 import BeautifulSoup

url = 'http://sy.lianjia.com/ershoufang/pg1/'

header = {

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

page = requests.get(url, headers=header) #访问网址 获取该 html内容

a = page.text

soup = BeautifulSoup(a,"lxml") #解析该网页内容

b=soup.find_all('div',class_='info clear') #find_all 找到 div class='info clear' 的标签

print(b)

爬取的内容就是我们需要的全部内容 中间会掺杂一些标签

6.去除标签

640daaaa0946

标签.png

图片中 我们可以看到 爬取出来中 还掺杂许多标签,而我们只需要文字,然后我想到了正则(可惜我不会,哈哈哈哈,有会的大神可以教教我)

但笨人有笨方法:我们一个一个解析 取文字

像图片中 【枫合万嘉 南北通透...】我们可以看出是 div标签 class='title' 的。(因为每页有很多个房源信息 所以我们要 for 循环)

其它标签亦然如此

640daaaa0946

去标签.png

我们还要爬出导入excle ,因此我在一个房源所有信息中加入[,] 方便我们后续分列 透视(只列出两个标签)

640daaaa0946

分列.png

7.标签去除掉 就要导入文件

with open("链家-沈阳-二手房-over", "a", encoding='utf-8') as f:

f.write(df+'\n')

我导入的是txt 文本 ,有需要可以导入 Excle Csv

8.分析数据(同事分析的一小部分数据)

640daaaa0946

分析.png

9.源代码

##author:Abel_chen

##防止你们照搬 我做了两个小错误 偷笑.jpg

import requests

from bs4 import BeautifulSoup

def one_page_code(user_in_city):

url = 'http://' + user_in_city + '.lianjia.com/ershoufang/pg{}/'

for a in range(1, 101):

url1 = url.format(a)

header = {'User-Agent': '*********'}

page = requests.get(url1, headers=header)

a=page.text

soup = BeautifulSoup(a,"lxml")

for b in soup.find_all('div',class_='info clears'):

for wz in b.find_all('div',class_='title'):

wz=wz.get_text()

for ad in b.find_all('div',class_='address'):

ad=ad.get_text()

for ys in b.find_all('div',class_='flood'):

ys=ys.get_text()

for sj in b.find_all('div',class_='followInfo'):

sj=sj.get_text()

for tag in b.find_all('div',class_='tag'):

tag=tag.get_text()

for jg in b.find_all('div',class_='priceInfo'):

jg=jg.get_text()

df=wz + ',' + ad + ',' + ys + ',' + sj + ',' + tag + ',' + jg

with open("链家-沈阳-二手房-over", "a", encoding='utf-8') as f:

f.write(df+'\n')

def main():

user_in_city = input('输入爬取城市:')

one_page_code( user_in_city)

if __name__ == '__main__':

main()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python爬虫requests源码链家_Python 爬虫 链家二手房(自行输入城市爬取) 的相关文章

  • 结构体初值设置问题小记

    文章目录 前言 esp32 panic报错LoadProhibited 原因探究 前言 在搞esp32 ota功能的时候 esp32一加上空中升级的功能 就不断重启 查了两天 才发现是结构体初始化赋值的问题 esp32 panic报错Loa
  • c++中函数参数值传递的方式

    在调用函数时 需要将变量值传递给函数参数 即给函数参数赋值 在c 中函数参数值传递有三种方式 按值传递 指针传递 参数地址传递 引用传递 下面简单介绍一下这三种方式的异同 一 按值传递 按值传递实质上就是将传递的变量值拷贝一个副本给函数参数
  • Mac 安装 brew

    转载自 https zhuanlan zhihu com p 90508170 Homebrew是一款包管理工具 目前支持macOS和linux系统 主要有四个部分组成 brew homebrew core homebrew cask ho
  • PN结的形成原理

    关于二极管的原理来自于PN结 下图为本征半导体 1 空穴与电子 动画中空穴是红的 电子是蓝的 其实我一直对空穴这个概念很抵触 因为从这个动画上来看空穴是不动的 但讲PN结 三极管的时候都会把空穴当成运动的载流子 虽然似乎也不是很难理解 P型
  • 使用阿里云服务器搭建简单的linux——web服务器

    使用阿里云服务器搭建简单的linux web服务器 云服务器的搭建方法有很多种 如 源码安装 yum在线安装 apt指令安装 再次介绍介绍一种自我是用的一种安装方式 1 首先 选用使用WinSCP工具来远程链接服务器的盘库管理 使用putt
  • 高德地图php定位我的位置,我的高德地图之定位,Marker,位置信息。

    高德地图 定位 Marker 本期给大家高德地图的展示 和定位 并显示popwindow 当前位置信息 滑动地图实时更新位置信息 界面预览 具体实现 新司机爬坑 界面预览 具体实现 地图控件和定位必须的 private AMap aMap
  • SpringBoot 整合Redis客户端lettuce,LPOS异常分析

    项目场景 项目场景 SpringBoot 整合Redis客户端lettuce 问题描述 整合Redis客户端lettuce出现异常 Caused by java lang NoSuchFieldError LPOS at org sprin
  • SeleniumLibrary4.5.0 关键字详解(三)

    SeleniumLibrary4 5 0 关键字详解 三 库版本 4 5 0 库范围 全局 命名参数 受支持 简介 SeleniumLibrary是Robot Framework的Web测试库 本文档说明了如何使用SeleniumLibra
  • 设计模式之原型模式(Prototype)摘录

    23种GOF设计模式一般分为三大类 创建型模式 结构型模式 行为模式 创建型模式包括 1 FactoryMethod 工厂方法模式 2 Abstract Factory 抽象工厂模式 3 Singleton 单例模式 4 Builder 建
  • Linux 性能优化的全景指南,可能都在这里了,建议收藏~

    更多专业文档请访问 www itilzj com Linux 性能优化 性能优化 性能指标 高并发和响应快对应着性能优化的两个核心指标 吞吐和延时 应用负载角度 直接影响了产品终端的用户体验 系统资源角度 资源使用率 饱和度等 性能问题的本
  • uniapp中获取dom元素的方法,更改dom元素颜色(遇坑记录)

    前言 最近写uniapp 遇到一个需要获取到页面中dom元素 我第一反应是使用this refs进行获取 于是我开心的使用this refs写了很多代码 使用h5调试的过程中没有发现任何问题 但后来真机调试的时候发现在app端无效 于是我查
  • ftp服务器内部文件,ftp服务器内部文件

    ftp服务器内部文件 内容精选 换一换 您需要提前准备好符合条件的镜像文件 并了解操作系统的已知问题 参见已知问题 表1中 网络 工具 驱动相关的配置需要在虚拟机内部完成 强烈建议您在原平台的虚拟机实施修改后 再导出镜像文件 当然 您也可以
  • 推进数字化转型进程,AntDB数据库协同神州云动共促新发展

    当今 数字化转型已成为企业发展的必由之路 随着新技术的不断发展和市场的日益竞争 越来越多的企业开始意识到数字化转型的重要性 在帮助企业数字化转型过程中 高效的客户关系管理软件和具有灵活性 可伸缩的数字底座 可以帮助企业突破管理瓶颈 降本增效
  • [1094]adb控台中Permission denied的解决方案

    前提 手机一定要root 在控制台中想要将电脑上c盘中的tcpdump文件导入到手机 data local tcpdump中 于是采用adb push c tcpdump data local tcpdump命令 但提示Permission
  • C语言快速入门(3)

    目录 1 操作符 1 2关系操作符 1 3自增自减操作符 1 3三目操作符 exp1 exp2 exp3 2 常见关键字 2 1常见关键字 2 2关键字typedef 2 3关键字static 2 3 1static修饰局部变量 2 3 2
  • Windows上安装Linux步骤(虚拟机与WSL)

    虚拟机方式 1 安装VMware 官网网址 https www vmware com cn products workstation pro html 1 选择正版或者试用版 我用于学习就选择试用版了 2 根据你所使用的系统选择下载版本 3
  • F110操作手册-自动付款

    SAP 系统 F110系统操作手册 目 录 1 自动付款 3 1 自动付款 事务代号 F110 菜单路径 会计 财务会计 应付帐款 期间处理 双击进入自动付款界面 填写好运行日期 标识 标识是为了后面的递交 审核等做个标记 便于查询 在中说
  • Linux下摄像头应用编程

    Linux下摄像头应用编程 V4L2是Video for linux2的简称 为linux中关于视频设备的内核驱动 在Linux中 视频设备是设备文件 可以像访问普通文件一样对其进行读写 摄像头在 dev video 下 如果只有一个视频设
  • 深入理解instrument

    一 前提 目前主流的APM开源框架如Pinpoint SkyWalking等等都是通过java lang instrument包提供的字节码增强功能来实现的 实际上 我们日常应用的各种工具中 有很多都是基于他们实现的 例如常见的热部署 JR

随机推荐

  • 区块链开发溯源系统 基于以太坊的溯源系统开发

    基于以太坊的溯源系统 实现分级用户 商品溯源等的功能 毕设系统
  • 2023华为OD机试真题-机房布局(JAVA、Python、C++)

    题目描述 小明正在规划一个大型数据中心机房 为了使得机柜上的机器都能正常满负荷工作 需要确保在每个机柜边上至少要有一个电箱 为了简化题目 假设这个机房是一整排 M表示机柜 I表示间隔 请你返回这整排机柜 至少需要多少个电箱 如果无解请返回
  • 你真的搞懂Class,class了么?

    博客主页 傻根根呀 欢迎点赞 收藏 留言 欢迎讨论 本文由 傻根根呀 原创 首发于 CSDN 由于博主是在学小白一枚 难免会有错误 有任何问题欢迎评论区留言指出 感激不尽 个人主页 精品专栏 不定时更新 JavaSE MySQL LeetC
  • 有时间学习下ue4开源项目shootergame和虚幻竞技场

    无意中 看到有人推荐这个 特此留个坑 以后学习下 另外 官方文档上有大例子推荐 可以学下 https docs unrealengine com 4 27 zh CN Basics InstallingUnrealEngine Custom
  • 算术基本定理及其应用

    算术基本定理 又称为正整数的唯一分解定理 即 每个大于1的自然数均可写为质数的积 而且这些素因子按大小排列之后 写法仅有一种方式 例如 6936 23 3 172 1200 24 3 52 6936 2 3
  • Reliable Cloud Infrastructure: Design and Process学习笔记

    最后更新2022 03 16 忘记更新对应的学习笔记 补上 这一科有9节 加上0章简介 简介 google cloud的好多功能有点相似 这科内容是介绍应该选什么产品 怎么选择 怎么规划 怎么设计等等 首先 你要有个软件产品的设计思想 包括
  • 西米支付:微信服务商支付的介绍

    服务商申请条件 1 微信支付服务商面向企业 政府机关 事业单位 社会组织类型主体开放申请 2 申请资料准备 1 业务联系人信息 包含联系人姓名 联系手机 联系邮箱 若联系人非法定代表人 还需提交有效证件照片 2 主体身份信息 营业执照 登记
  • (纯c)数据结构之------>链表(详解)

    目录 一 链表的定义 1 链表的结构 2 为啥要存在链表及链表的优势 二 无头单向链表的常用接口 1 头插 尾插 2 头删 尾删 3 销毁链表 打印链表 4 在pos位置后插入一个值 5 消除pos位置后的值 6 查找链表中的值并且返回它的
  • 【Nginx】解决在Nginx+Vue部署多个前端项目,二级目录不能访问、访问空白的问题

    一 前言 需求 设置访问 www ai com 访问时打开前端代码 tmp zhsf 设置访问 www ai com case search 时 访问时打开另一个前端代码 tmp template 二 实现过程 1 根目录访问 部署使用ng
  • uni-cloud云函数管理公共模块依赖

    1 右键函数文件夹 选中依赖模块 更新依赖 2 完成后
  • Keras中的fit函数训练集,验证集和测试集

    Keras中的fit函数训练集 验证集和测试集 1 Keras fit函数history对象包含两个重要属性 epoch 训练的轮数 history 它是一个字典 包含val loss val acc loss acc四个key 2 关于训
  • 第十三届蓝桥杯大赛软件赛省赛 Python 大学 C 组

    试题 A 排列字母 本题总分 5 分 问题描述 小蓝要把一个字符串中的字母按其在字母表中的顺序排列 例如 LANQIAO 排列后为 AAILNOQ 又如 GOODGOODSTUDYDAYDAYUP 排列后为 AADDDDDGGOOOOPST
  • 拥抱ChatGPT,开启结对咨询模式!

    ChatGPT刮起了一阵旋风 ChatGPT到底能做什么 做到什么程度 真的会让咨询顾问失业吗 带着这样的疑问 我费尽周折 注册了ChatGPT账号 我先从一个大众化的话题开启了与ChatGPT的对话 如何提高软件开发的质量 如果是我回答这
  • 网页文字复制的几种方法

    1 开启网页阅读模式 这种方法适用于Microsoft Edge浏览器中 它有网页阅读功能可以使用 在网址的最前面加上 read 就会进入网页阅读界面 然后选中文字就可以直接进行复制了 2 直接拖拽 一种简单直接的方法 不用进行任何其他操作
  • 如何在服务器上跑python程序

    购买服务器 首先你需要一个服务器 阿里云云翼计划有一个9 9云服务器ECS服务 你怎么买我不管 反正你最后给我搞到一个云服务器 购买的配置界面 由于阿里云现在限量购买 所以这里只是截个图说明而已 主要说明一点公共镜像选择ubuntu14 0
  • 【软件测试】理论知识基础第一章

    前言 骗取自己的救赎 直到和染尘斑驳的玫瑰一起坠入深渊 软件测试 理论知识基础第一章 一 认识软件测试 1 什么是软件测试 二 常见的测试分类 1 阶段划分 2 代码可见度划分 3 扩展 总结 三 模型 1 质量模型 2 W模型 四 软件测
  • Webservice接口的生成及调用

    最近项目上要对接一个Webservice形式的接口 因为以前一直没有对接过这种类型的 所以这次专门查了一些资料学习下 一 Webservice的简单介绍 WebService是一种跨编程语言和跨操作系统平台的远程调用技术 它通过标准通信协议
  • AAA协议tacacs认证简单实验

    实验名称 AAA的tacacs验证 实验目的 在AAA认证服务器上认证客户端telnet登陆路由器 实验拓扑图 主要实验步骤 Router上的配置 Router gt en Router conf t Router config inter
  • 内存超频时序怎么调_超频技术之内存“时序”重要参数设置解说

    超频技术之内存 时序 重要参数设置解说 来源 华强电子网 作者 华仔 浏览 432 时间 2017 05 10 21 48 标签 摘要 相信大多数超频帖子里都会提到内存时序调整 也就是我们经常看到的5 5 5 15 1T 4 5 4 12
  • python爬虫requests源码链家_Python 爬虫 链家二手房(自行输入城市爬取)

    因同事想在沈阳买房 对比分析沈阳各区的房价 让我帮忙爬取一下链家网相关数据 然后打 算记下笔记 用于总结学到的东西 用到的东西 一 爬虫需要会什么 学习东西 首先你要知道它是干嘛的 爬虫 顾名思义就是爬取你所看到的网页内容 小说 新闻 信息