Advertisement

爬取链家二手房数据

阅读量:

爬取链家二手房数据.md

1.介绍项目

2.分析网站结构

3.说明技术选择

4.excel表格构建字段

1. 介绍项目

利用python爬取链家网二手房数据

包含标题信息、地理位置要素、空间布局特征、价格相关指标等基础要素进行综合描述
涵盖项目的基本概况分析以及核心要素提取工作
基于城市名称这一关键属性展开数据抓取操作
针对特定页码范围内的数据获取需求进行自动化处理设计
通过爬虫技术实现目标数据的精确提取过程
可以选择Scrapy或Selenium工具来完成目标数据的抓取工作
至少收集1000条高质量样本数据作为分析基础
单价不低于5万元/平方米的市场定位标准需严格遵守

长沙二手房资源_长沙二手房交易(长沙链家)

2. 分析网站结构

首先进入链家网页,点击二手房,进入二手房页面

网络图片无法正常加载,请检查链接有效性并尝试重新上传

外部链接中的图片无法正常加载(img-q3t9Co3x-1666849945451),建议用户将该文件保存并直接上传至目标平台(C:\Users\16611\AppData\Roaming/MMU)\temp (2))

通过右键菜单选择检查选项,在二手房标签上定位并执行操作以设置该元素的XPATH属性为... 对于其他需要的数据项进行同样的处理步骤

外部图片无法重存可能导致转存失败的情况。可能存在防盗链设置,建议将图片保存后再进行上传操作。

由于外链图片转存失败,请检查网络连接并重新获取图片链接

(C:\Users\16611\Desktop\新建文件夹 (2)]\wpsC821.tmp.jpg)

接下来用xpath提取这一页的数据,并对其规律进行分析进而调整xpath设置;对于其他数据则采用同样的重复操作方式处理

外部链接中的图片存储出现故障,请您尝试将图片保存后直接上传至该平台以确保正常显示

3.说明技术选择

该网页将用selenium抓取所需数据

复制代码
    目标链接:https://cs.lianjia.com/ershoufang/

导入模块和添加无头参数

复制代码
    # 导入所需模块
    from selenium import webdriver
    import time
    # 无界面模式
    options = webdriver.ChromeOptions()
    # #开启无界面模式,给对象添加无头参数
    options.add_argument('--headless')  # 添加无头参数
    driver = webdriver.Chrome(options=options)

观察翻页url规律并设置指定页码爬取

复制代码
    # 观察翻页之后的url,找出规律
    # https://cs.lianjia.com/ershoufang/第一页
    # https://cs.lianjia.com/ershoufang/pg2/第二页
    # https://cs.lianjia.com/ershoufang/pg3/第三页
    # 找出规律:变化参数pgx
    # 设置需要爬取的页数
    n=eval(input('请输入您要爬取的页数:'))

逐次用selenium进入链接,抓取每页的数据

外部链接中的图片无法正常上传...

复制代码
    # 用selenium进入链接
    driver.(f'https://cs.lianjia.com/ershoufang/pg{1}/')#链接
    # 用selenium的xpath获取所需数据,并存入空列表
    #标题
    ele=driver.find_elements_by_xpath('//*[@id="content"]/div[1]/ul/li[*]/div[1]/div[1]/a')

用xpath提取这一页数据,并存入空列表

复制代码
    ele=driver.find_elements_by_xpath('//*[@id="content"]/div[1]/ul/li[*]/div[1]/div[1]/a')
    for one in ele:
    print(one.text)
    listone.append(one.text)

4.excel表格构建字段

将数据存入excel表格中

复制代码
    # # 保存数据
    import xlwt
    #创建表格
    book = xlwt.Workbook(encoding='utf-8', style_compression=0)
    sheet = book.add_sheet('yes', cell_overwrite_ok=True)
    #写入标签
    a = ['标题', '位置', '布局', '总价(万)', '均价']
    #遍历写入
    for i in range(len(a)):
    sheet.write(0, i, a[i])  # 第0行第i列
    for j in range(len(listone)):
    sheet.write(j + 1, 0, listone[j])
    for j in range(len(listtwo)):
    sheet.write(j + 1, 1, listtwo[j])
    for j in range(len(listthree)):
    sheet.write(j + 1, 2, listthree[j])
    for j in range(len(listfour)):
    sheet.write(j + 1, 3, listfour[j])
    for j in range(len(listfive)):
    sheet.write(j + 1, 4, listfive[j])
    #保存文件
    book.save('E:\Pycharm\爬虫班\自己爬取的东西\文件/爬取链家二手房数据.xls')
完整代码:
复制代码
    # 导入所需模块
    from selenium import webdriver
    import time
    # 无界面模式
    options = webdriver.ChromeOptions()
    # #开启无界面模式,给对象添加无头参数
    options.add_argument('--headless')  # 添加无头参数
    driver = webdriver.Chrome(options=options)
    # 设置空列表,用于储存数据
    listone=[]
    listtwo=[]
    listthree=[]
    listfour=[]
    listfive=[]
    # 观察翻页之后的url,找出规律
    # https://cs.lianjia.com/ershoufang/第一页
    # https://cs.lianjia.com/ershoufang/pg2/第二页
    # https://cs.lianjia.com/ershoufang/pg3/第三页
    # 找出规律:变化参数pgx
    # 设置需要爬取的页数
    n=eval(input('请输入您要爬取的页数:'))
    for i in range(1,n):
    time.sleep(3)#每爬一页停顿3秒,防止抓取速度过快出现反爬
    print(f'-----------这是第{i}页--------------')
    # 用selenium进入链接
    driver.get(f'https://cs.lianjia.com/ershoufang/pg{1}/')#链接
    # 用selenium的xpath获取所需数据,并存入空列表
    #标题
    ele=driver.find_elements_by_xpath('//*[@id="content"]/div[1]/ul/li[*]/div[1]/div[1]/a')
    for one in ele:
        print(one.text)
        listone.append(one.text)
    #位置
    ele2=driver.find_elements_by_xpath('//*[@id="content"]/div[1]/ul/li[*]/div[1]/div[2]/div')
    for two in ele2:
        print(two.text)
        listtwo.append(two.text)
    #布局
    ele3=driver.find_elements_by_xpath('//*[@id="content"]/div[1]/ul/li[*]/div[1]/div[3]/div')
    for three in ele3:
        print(three.text)
        listthree.append(three.text)
    #总价
    ele4=driver.find_elements_by_xpath('//*[@id="content"]/div[1]/ul/li[*]/div[1]/div[6]/div[1]/span')
    for four in ele4:
        print(four.text+'万')
        listfour.append(four.text)
    #均价
    ele5=driver.find_elements_by_xpath('//*[@id="content"]/div[1]/ul/li[*]/div[1]/div[6]/div[2]/span')
    for five in ele5:
        print(five.text)
        listfive.append(five.text)
    print(listone)
    print(len(listone))
    
    # # 保存数据
    import xlwt
    #创建表格
    book = xlwt.Workbook(encoding='utf-8', style_compression=0)
    sheet = book.add_sheet('yes', cell_overwrite_ok=True)
    #写入标签
    a = ['标题', '位置', '布局', '总价(万)', '均价']
    #遍历写入
    for i in range(len(a)):
    sheet.write(0, i, a[i])  # 第0行第i列
    for j in range(len(listone)):
    sheet.write(j + 1, 0, listone[j])
    for j in range(len(listtwo)):
    sheet.write(j + 1, 1, listtwo[j])
    for j in range(len(listthree)):
    sheet.write(j + 1, 2, listthree[j])
    for j in range(len(listfour)):
    sheet.write(j + 1, 3, listfour[j])
    for j in range(len(listfive)):
    sheet.write(j + 1, 4, listfive[j])
    #保存文件
    book.save('E:\Pycharm\爬虫班\自己爬取的东西\文件/爬取链家二手房数据.xls')

处理第j个元素
遍历listfour中的每一个元素
将第j个元素写入到第3列
遍历listfive中的每一个元素
将第j个元素写入到第4列
确保所有数据已完整保存至指定位置
book.save(‘E:\Pycharm\爬虫班\自己爬取的东西\文件/爬取链家二手房数据.xls’)

复制代码
    附:直接运行该代码请提前准备好所需模块,以及更改保存的路径。

全部评论 (0)

还没有任何评论哟~