import os.path

import requests
from lxml import etree
import xlwt
import xlrd def create_excel():
if not os.path.exists('./lianjia_excel.xls'):
book = xlwt.Workbook(encoding='utf-8', style_compression=0) sheet = book.add_sheet(f'{city}-链家二手房', cell_overwrite_ok=True)
col = ('房源名称', '所在小区', '所在地区', '房源信息', '发布时间', '房源标签', '房源价格', '房源单价')
# 创建列名
for i in range(0, 8):
sheet.write(0, i, col[i])
savepath = './lianjia_excel.xls'
book.save(savepath)
return book
book = xlrd.open_workbook('./lianjia_excel.xls') # 得到文件
return book if __name__ == '__main__':
city = input('请输入需要查询的城市数据:')
# 创建一个excel
book = xlwt.Workbook(encoding='utf-8', style_compression=0) sheet = book.add_sheet(f'{city}-链家二手房', cell_overwrite_ok=True)
col = ('房源名称', '所在小区', '所在地区', '房源信息', '发布时间', '房源标签', '房源价格', '房源单价')
# 创建列名
for i in range(0, 8):
sheet.write(0, i, col[i]) url = 'https://cd.lianjia.com/ershoufang/'
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'
} page = requests.get(url=url, headers=headers)
page.encoding = 'utf-8'
tree = etree.HTML(page.text)
li_list = tree.xpath('//div[@class="content "]/div/ul[@class="sellListContent"]/li')
data_list = []
for li in li_list: li_div = li.xpath('./div[@class="info clear"]')
if len(li_div) <= 0:
continue
li_div = li.xpath('./div[@class="info clear"]')[0]
# 房源名称
li_title = li_div.xpath('./div[@class="title"]/a/text()')[0] # 房源链接
li_url = li_div.xpath('./div[@class="title"]/a/@href')[0]
# 所在小区
li_xiaoqu = li_div.xpath('./div[@class="flood"]/div/a[1]/text()')[0]
# 所在小区URL
li_xiaoqu_url = li_div.xpath('./div[@class="flood"]/div/a[1]/@href')[0]
# 所在地区
li_diqu = li_div.xpath('./div[@class="flood"]/div/a[2]/text()')[0]
# 所在地区URL
li_diqu_url = li_div.xpath('./div[@class="flood"]/div/a[2]/@href')[0]
# 房源信息
li_houseinfo = li_div.xpath('./div[@class="address"]/div/text()')[0]
# 发布时间
li_followinfo = li_div.xpath('./div[@class="followInfo"]//text()')
# 房源标签
li_tag = li_div.xpath('./div[@class="tag"]//text()')
# 房源总价
li_price = li_div.xpath('./div[@class="priceInfo"]/div[1]/span/text()')[0]
li_price = li_price + '万'
# 房源单价
li_unitPrice = li_div.xpath('./div[@class="priceInfo"]/div[2]/span/text()')[0]
data_list.append([li_title, li_xiaoqu, li_diqu, li_houseinfo, li_followinfo, li_tag, li_price, li_unitPrice]) for data in data_list:
for i in range(0, len(data_list)):
data = data_list[i]
for j in range(0, 8):
sheet.write(i + 1, j, data[j])
savepath = './lianjia_excel.xls'
book.save(savepath)

excel保存效果如图:

xpath拉取链家二手房信息并保存到excel中的更多相关文章

  1. 使用requests、BeautifulSoup、线程池爬取艺龙酒店信息并保存到Excel中

    import requests import time, random, csv from fake_useragent import UserAgent from bs4 import Beauti ...

  2. 使用requests、re、BeautifulSoup、线程池爬取携程酒店信息并保存到Excel中

    import requests import json import re import csv import threadpool import time, random from bs4 impo ...

  3. python爬取链家二手房信息,确认过眼神我是买不起的人

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  4. 用python实现批量获取Linux主机简要信息并保存到Excel中 unstable 1.1

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- #filename get_linux_info.py #获取Linux主机的信息 # titles=[' ...

  5. 第三方模块的下载与使用、requests模块、爬取链家二手房数据、openpyxl模块、hashlib加密模块

    目录 第三方模块的下载与使用 下载第三方模块可能会出现的问题 网络爬虫模块之requests模块 网络爬虫实战之爬取链家二手房数据 自动化办公领域之openpyxl模块 第三方模块的下载与使用 第三方 ...

  6. python抓取链家房源信息(二)

    试着用scrapy将之前写的抓取链家网信息的重新写了写 然后先是用了第一页的网页作为测试,调试代码,然后发现总是抓取的时候遇见了 类似于这样的问题,并且抓取不到信息 2017-03-28 17:52: ...

  7. 【nodejs 爬虫】使用 puppeteer 爬取链家房价信息

    使用 puppeteer 爬取链家房价信息 目录 使用 puppeteer 爬取链家房价信息 页面结构 爬虫库 pupeteer 库 实现 打开待爬页面 遍历区级页面 方法一 方法二 遍历街道页面 遍 ...

  8. python3 爬虫教学之爬取链家二手房(最下面源码) //以更新源码

    前言 作为一只小白,刚进入Python爬虫领域,今天尝试一下爬取链家的二手房,之前已经爬取了房天下的了,看看链家有什么不同,马上开始. 一.分析观察爬取网站结构 这里以广州链家二手房为例:http:/ ...

  9. Python爬取链家二手房源信息

    爬取链家网站二手房房源信息,第一次做,仅供参考,要用scrapy.   import scrapy,pypinyin,requests import bs4 from ..items import L ...

  10. python抓取链家房源信息(三)

    之前写过一个链家网北京二手房的数据抓取,然后本来今天想着要把所有的东西弄完,但是临时有事出去了一趟,耽搁了一下,然后现在是想着把北京的二手房的信息都进行抓取,并且存储在mongodb中, 首先是通过' ...

随机推荐

  1. 【分析笔记】全志方案通过命令行操作 GPIO 口(带源码分析)

    前言说明 在项目开发初期,很经常会需要临时操作某个GPIO来验证某些功能,可以通过编写一个简单的驱动程序来操作,但更方便的是可以通过命令行直接操作 GPIO ,这样不需要经过编写代码.编译驱动.推入文 ...

  2. TamperMonkey油猴脚本获取

    TamperMonkey官网-脚本获取页面    https://www.tampermonkey.net/scripts.php?ext=dhdg 脚本站点1:Userscript.ZoneSear ...

  3. JavaScript 评测代码运行速度

    一.使用 performance.now() API 在 JavaScript 中,可以使用 performance.now() API 来评测代码的运行速度.该 API 返回当前页面的高精度时间戳, ...

  4. 重学SpringBoot. step4 Redis的应用

    Redis的应用 Redis支持的七种数据类型:字符串.散列.列表(链表).集合.有序集合.基数和地理位置,具体用Java怎么操作其实可以直接看redisTemplate的源代码. Redis引出来的 ...

  5. CoppeliaSim(原V-REP)教育版不给下载的解决方法

    CoppeliaSim(原V-REP)教育版不给下载的解决方法 首先进入CoppeliaSim官网 网址:https://www.coppeliarobotics.com/downloads http ...

  6. JDBC工具类,减少代码冗余好帮手

    首先要在scr下创建一个file文件 当然 需要初始的注册驱动和数据库操作都可以实现,才可以用jdbc工具类进行减多少代码冗余~可以看前面一篇的博客,就是写如何连接jdbc哈~代码运行成功的快乐真的好 ...

  7. 源码下载teb

    git clone https://github.com/rst-tu-dortmund/teb_local_planner.git git checkout <ros版本分支> git ...

  8. imax6开发版_交叉编译

    下载 arm-linux-gnueabihf-gcc编译器 sudo apt install gcc-arm-linux-gnueabihf #安装完成后使用如下命令查看版本 arm-linux-gn ...

  9. EPICS Archiver Appliance 单点极限储存速率测试

    https://blog.csdn.net/weixin_43767046/article/details/113748775 这个测试一直在进行,虽然因为摸数据库设置而重启过并清过库,但读示波器波形 ...

  10. 如何在不额外读流的情况下计算md5值

    设想这样一个场景:从网络流中读取文件到硬盘中并计算文件的md5值.通常的做法是先将文件保存下来,再计算文件的md5,但这样会一共会出现三次I/O,一次网络I/O,两次磁盘I/O. 导致额外磁盘I/O的 ...