【Python】动态页面爬取:获取链家售房信息(学堂在线 杨亚)

本文主要是介绍【Python】动态页面爬取:获取链家售房信息(学堂在线 杨亚),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、内容来源

任务:学会爬取一个网站的部分信息,并以".json"文件形式保存

课程来源:大数据分析师(第一期)(北邮 杨亚)

爬取网站:链家二手房 链家新房

二、准备工作

对于准备阶段,可参考:
【Python】Scrapy入门实例:爬取北邮网页信息并保存(学堂在线 杨亚)
1、创建工程
在cmd.exe窗口,找到对应目录,通过下列语句创建工程

scrapy startproject lianjia

2、创建begin.py文件
主要用于在Pycharm中执行爬虫工程(创建位置可参考后文工程文件层次图来理解)

from scrapy import cmdline
cmdline.execute("scrapy crawl lianjia".split())

3、修改items.py文件

import scrapy
class MyItem(scrapy.Item):name = scrapy.Field()desp = scrapy.Field()price = scrapy.Field()pass

4、修改setting.py文件

ITEM_PIPELINES = {'lianjia.pipelines.MyPipeline': 300,}

5、修改piplines.py
若无特殊保存格式需求,实际上所有爬虫的保存方式都一样

import jsonclass MyPipeline (object):def open_spider (self, spider):try:  #打开json文件self.file = open("Lianjia_MyData.json", "w", encoding="utf-8")except Exception as err:print (err)def process_item(self, item, spider):dict_item = dict(item)  # 生成字典对象json_str = json.dumps(dict_item, ensure_ascii = False) +"\n" #生成 json串self.file.write(json_str)  # 将 json串写入到文件中return itemdef close_spider(self, spider):self.file.close()  #关闭文件

三、爬虫核心

新建一个spider.py文件

import scrapy
from lianjia.items import MyItemclass mySpider(scrapy.spiders.Spider):name = "lianjia"allowed_domains = ["lianjia.com"]start_urls = ["https://bj.lianjia.com/ershoufang/"]start_urls = []for page in range(1,4):url = "https://bj.lianjia.com/ershoufang/pg{}/".format(page)start_urls.append(url)def parse(self, response):item = MyItem()for i in range(32):item['name'] = response.xpath('//*[@id="content"]/div[1]/ul/li[{}]/div[1]/div[2]/div/a/text()'.format(i+1)).extract()item['desp'] = response.xpath(#'//*[@id="content"]/div[1]/ul/li[{}]/div[1]/div[2]/div/text()''//*[@id="content"]/div[1]/ul/li[{}]/div[1]/div[3]/div/text()'.format(i+1)).extract()item['price'] = response.xpath('//*[@id="content"]/div[1]/ul/li[{}]/div[1]/div[6]/div[1]/span/text()'.format(i+1)).extract()if (item['name'] and item['desp'] and item['price']):   # 去掉值为空的数据yield (item)     # 返回item数据给到pipelines模块else:print(":::::::::error::::::::::",i+1,item['name'])

这里细节就不介绍了,但愿我若干年以后需要用到相关知识的时候还能记起吧!

四、补充资料

1、工程文件层次图
在这里插入图片描述
2、部分结果:
在这里插入图片描述

五、附加实验(作业)

在这里插入图片描述
spider.py

import scrapy
from lianjia2.items import MyItemclass mySpider(scrapy.spiders.Spider):name = "lianjia2"allowed_domains = ["lianjia.com"]#start_urls = ["https://bj.fang.lianjia.com/loupan/nhs1"]start_urls = []for page in range(1,6):url = "https://bj.fang.lianjia.com/loupan/nhs1pg{}/".format(page)start_urls.append(url)def parse(self, response):item = MyItem()for i in range(10):item['name'] = response.xpath('/html/body/div[4]/ul[2]/li[{}]/div/div[1]/a/text()'.format(i+1)).extract()item['desp'] = response.xpath('/html/body/div[4]/ul[2]/li[{}]/div/div[3]/span/text()'.format(i+1)).extract()item['price'] = response.xpath('/html/body/div[4]/ul[2]/li[{}]/div/div[6]/div[1]/span[1]/text()'.format(i+1)).extract()if (item['name'] and item['desp'] and item['price']):   # 去掉值为空的数据yield (item)     # 返回item数据给到pipelines模块else:print(":::::::::error::::::::::",i+1,item['name'])

piplines.py进行一定修改,删除小部分重复的数据(不写也行)

dict_item['desp'] = dict_item['desp'][0][3:]

在这里插入图片描述

5.13补充
【Python】爬取链家网页后的数据处理:北京房价排序(学堂在线 杨亚)

这篇关于【Python】动态页面爬取:获取链家售房信息(学堂在线 杨亚)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/735824

相关文章

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

Android WebView无法加载H5页面的常见问题和解决方法

《AndroidWebView无法加载H5页面的常见问题和解决方法》AndroidWebView是一种视图组件,使得Android应用能够显示网页内容,它基于Chromium,具备现代浏览器的许多功... 目录1. WebView 简介2. 常见问题3. 网络权限设置4. 启用 JavaScript5. D

Win32下C++实现快速获取硬盘分区信息

《Win32下C++实现快速获取硬盘分区信息》这篇文章主要为大家详细介绍了Win32下C++如何实现快速获取硬盘分区信息,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 实现代码CDiskDriveUtils.h#pragma once #include <wtypesbase

Python如何在Word中生成多种不同类型的图表

《Python如何在Word中生成多种不同类型的图表》Word文档中插入图表不仅能直观呈现数据,还能提升文档的可读性和专业性,本文将介绍如何使用Python在Word文档中创建和自定义各种图表,需要的... 目录在Word中创建柱形图在Word中创建条形图在Word中创建折线图在Word中创建饼图在Word

Python Excel实现自动添加编号

《PythonExcel实现自动添加编号》这篇文章主要为大家详细介绍了如何使用Python在Excel中实现自动添加编号效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、背景介绍2、库的安装3、核心代码4、完整代码1、背景介绍简单的说,就是在Excel中有一列h=会有重复

Python FastAPI入门安装使用

《PythonFastAPI入门安装使用》FastAPI是一个现代、快速的PythonWeb框架,用于构建API,它基于Python3.6+的类型提示特性,使得代码更加简洁且易于绶护,这篇文章主要介... 目录第一节:FastAPI入门一、FastAPI框架介绍什么是ASGI服务(WSGI)二、FastAP

Android如何获取当前CPU频率和占用率

《Android如何获取当前CPU频率和占用率》最近在优化App的性能,需要获取当前CPU视频频率和占用率,所以本文小编就来和大家总结一下如何在Android中获取当前CPU频率和占用率吧... 最近在优化 App 的性能,需要获取当前 CPU视频频率和占用率,通过查询资料,大致思路如下:目前没有标准的

Python中Windows和macOS文件路径格式不一致的解决方法

《Python中Windows和macOS文件路径格式不一致的解决方法》在Python中,Windows和macOS的文件路径字符串格式不一致主要体现在路径分隔符上,这种差异可能导致跨平台代码在处理文... 目录方法 1:使用 os.path 模块方法 2:使用 pathlib 模块(推荐)方法 3:统一使

一文教你解决Python不支持中文路径的问题

《一文教你解决Python不支持中文路径的问题》Python是一种广泛使用的高级编程语言,然而在处理包含中文字符的文件路径时,Python有时会表现出一些不友好的行为,下面小编就来为大家介绍一下具体的... 目录问题背景解决方案1. 设置正确的文件编码2. 使用pathlib模块3. 转换路径为Unicod

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization