import re  # 正则表达式,进行文字匹配
from bs4 import BeautifulSoup  # 网页解析,获取数据
import urllib.request, urllib.error  # 制定URL,获取网页数据
import xlwt  # 进行excel操作
findplace1 = re.compile(r'<a href="/zufang/.*" target="_blank">(.*)</a>-<a href="/zufang/.* target="_blank">.*</a>-<a href="/zufang.*" target="_blank" title=".*">.*</a>')  # 创建正则表达式对象,表示规则(字符串的模式)findplace2 = re.compile(r'<a href="/zufang/.*" target="_blank">.*</a>-<a href="/zufang/.* target="_blank">(.*)</a>-<a href="/zufang.*" target="_blank" title=".*">.*</a>')# 房子大小
finddaxiao = re.compile(r'<i>/</i>(.*)<i>/</i>.*<i>/</i>.*<span class="hide">', re.S)  # re.s让换行符包含在字符中
# 房子朝向
findfangxiang = re.compile(r'<i>/</i>.*<i>/</i>(.*)<i>/</i>.*<span class="hide">', re.S)
# 房子规格
findguige = re.compile(r'<i>/</i>.*<i>/</i>.*<i>/</i>(.*)<span class="hide">', re.S)
# 楼层类型
findleixing = re.compile(r'<p class="content__list--item--des">.*<i>/</i>(.*)</span>.*</p>.*<p class="content__list--item--bottom oneline">',re.S)
# 是否靠近地铁
findsubway = re.compile(r'<i class="content__item__tag--is_subway_house">(.*)</i>')
# 是否是精装
finddecoration = re.compile(r'<i class="content__item__tag--decoration">(.*)</i>')
# 是否可以随时看房
findkey = re.compile(r'<i class="content__item__tag--is_key">(.*)</i>')
# 是否是新上的
findnew = re.compile(r'<i class="content__item__tag--is_new">(.*)</i>')
# 维护时间
findtime = re.compile(r'<span class="content__list--item--time oneline">(.*)</span>')
# 平均租金
findmoney = re.compile(r'<span class="content__list--item-price"><em>(.*)</em>')def main():baseurl = "https://sh.lianjia.com/zufang/"datalist = getData(baseurl)savepath = "lj.xls"saveData(datalist, savepath)def getData(baseurl):  # 调用获取页面信息的函数datalist = []  # 分配暂存的空间for i in range(0, 100):url = baseurl + str(i)html = askURL(url)  # 保存获取到的网页源码# 逐一解析数据(边获取边解析)soup = BeautifulSoup(html, "html.parser")  # html.parser是html的解析器for item in soup.find_all('div', class_="content__list--item"):  # 查找符合要求的字符串,形成列表# print(item) #测试:查看链家item全部信息data = []item = str(item)  # 转换成字符串,否则无法识别# 链家详情链接place1 = re.findall(findplace1, item)[0]  # re库用来通过正则表达式查找指定的字符串place2 = re.findall(findplace2, item)[0]place = place1 + '-' + place2data.append(place)  # 添加地址daxiao = re.findall(finddaxiao, item)[0]daxiao = daxiao.strip()data.append(daxiao.replace("㎡", ""))  # 添加房子大小(平米)并替换前后空格fangxiang = re.findall(findfangxiang, item)[0]data.append(fangxiang.replace(" ", ""))  # 添加房子朝向并替换空格guige = re.findall(findguige, item)[0]data.append(guige.replace(" ", ""))  # 添加房子户型并替换空格leixing1 = re.findall(findleixing, item)[0]leixing2 = leixing1.strip()  # 去掉前后空格leixing3 = leixing2.replace(" ", "")  # 将空格替换掉data.append(leixing3[0:3])  # 添加房子楼层类型并替换空格data.append(leixing3[4:8].replace("层)", ""))  # 添加房子层数并替换掉()subway = re.findall(findsubway, item)  # 可能写有靠近地铁if (len(subway)) != 0:subway = subway[0]data.append(subway)  # 添加近地铁else:data.append("不靠近地铁")  # 添加不靠近地铁decoration = re.findall(finddecoration, item)if len(decoration) != 0:decoration = decoration[0]data.append(decoration)  # 添加精装else:data.append("不是精装")  # 添加不是精装key = re.findall(findkey, item)if len(key) != 0:key = key[0]data.append(key)  # 添加随时看房else:data.append("不是随时看房")  # 添加不是随时看房new = re.findall(findnew, item)if len(new) != 0:new = new[0]data.append(new)  # 添加新上else:data.append("不是新上")  # 添加不是新上time = re.findall(findtime, item)[0]data.append(time)  # 添加维护时间money = re.findall(findmoney, item)[0]data.append(money)  # 添加平均租金(元/月)datalist.append(data)  # 将data中的数据放入datalist中return datalistdef askURL(url):head = {  # 模拟浏览器头部信息,向链家服务器发送消息"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"}# 用户代理,表示告诉链家服务器,我们是什么类型的机器,浏览器(本质上是爬虫)request = urllib.request.Request(url, headers=head)html = ""try:response = urllib.request.urlopen(request)html = response.read().decode("utf-8")# print(html)    测试用的except urllib.error.URLError as e:if hasattr(e, "code"):print(e.code)if hasattr(e, "reason"):print(e.reason)return html# 保存数据  输入区域和户型,输出该区域和户型的平均租金
def saveData(datalist, savepath):print("save...")book = xlwt.Workbook(encoding="utf-8", style_compression=0)  # 创建workbook对象sheet = book.add_sheet('链家租房信息', cell_overwrite_ok=True)  # 创建工作表col = ("区域", "房子大小", "房子朝向", "户型", "楼层类型", "楼层数", "是否靠近地铁", "是否是精装", "是否可以随时看房","是否是新上的", "维护时间", "平均租金")for i in range(0, 12):sheet.write(0, i, col[i])  # 列名for i in range(0, 3000):print("第%d条" % (i + 1))data = datalist[i]for j in range(0, 12):sheet.write(i + 1, j, data[j])  # 数据book.save('lj.xls')main()
print("fff")
import requests
import parsel
import time
from lj1 import csv_writerfor page in range(1, 101):print('=='.format(page))time.sleep(1)url = 'https://cs.lianjia.com/ershoufang/pg{}/'.format(page)headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'}response = requests.get(url=url, headers=headers)selector = parsel.Selector(response.text)lis = selector.css('.sellListContent li')dit = {}for li in lis:title = li.css('.title a::text').get()dit['标题'] = titlepositionInfo = li.css('.positionInfo a::text').getall()info = '-'.join(positionInfo)dit['开发商'] = infohouseInfo = li.css('.houseInfo::text').get()dit['房子信息'] = houseInfofollowInfo = li.css('.followInfo::text').get()dit['发布周期'] = followInfoPrice = li.css('.totalPrice span::text').get()dit['售价/万'] = PriceunitPrice = li.css('.unitPrice span::text').get()dit['单价'] = unitPricecsv_writer.writerow(dit)print(dit)
import csvf = open('二手房信息.csv', mode='a', encoding='utf-8-sig', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['标题', '开发商', '房子信息', '发布周期', '售价/万', '单价'])
csv_writer.writeheader()

Python爬取链家网上的房源信息相关推荐

  1. Python爬虫爬取链家网上的房源信息练习

    一 原链接:用Python爬虫爬取链家网上的房源信息_shayebuhui_a的博客-CSDN博客_python爬取链家 打开链家网页:https://sh.lianjia.com/zufang/  ...

  2. python爬房源信息_用python爬取链家网的二手房信息

    题外话:这几天用python做题,算是有头有尾地完成了.这两天会抽空把我的思路和方法,还有代码贴出来,供python的初学者参考.我python的实战经历不多,所以代码也是简单易懂的那种.当然过程中还 ...

  3. python 爬取链家数据_用python爬取链家网的二手房信息

    题外话:这几天用python做题,算是有头有尾地完成了.这两天会抽空把我的思路和方法,还有代码贴出来,供python的初学者参考.我python的实战经历不多,所以代码也是简单易懂的那种.当然过程中还 ...

  4. python爬虫——使用bs4爬取链家网的房源信息

    1. 先看效果 2. 进入链家网,这里我选择的是海口市点击跳转到链家网 3. 先看网页的结构,这些房子的信息都在li标签,而li标签再ul标签,所以怎么做大家都懂 4. 代码如下,url的链接大家可以 ...

  5. python 爬取链家网北京租房信息

    刚学习了python,中途遇到很多问题,查了很多资料,最关键的就是要善于调试,div信息一定不要找错,下面就是我爬取租房信息的代码和运行结果: 链家的房租网站 两个导入的包 1.requests 用来 ...

  6. python爬取链家房屋及经纬度信息-以宁波为例

    铺垫工作 1:寻找你需要的城市的url. 2 :获取每栋房屋的详情url. 3:获取具体信息 4:利用百度API解析地址返回经纬度(其实在链家的网站上已经返回了经纬度,但是不知道为何拿不到res.te ...

  7. python关于二手房的课程论文_基于python爬取链家二手房信息代码示例

    基本环境配置 python 3.6 pycharm requests parsel time 相关模块pip安装即可 确定目标网页数据 哦豁,这个价格..................看到都觉得脑阔 ...

  8. python爬取链家网的房屋数据

    python爬取链家网的房屋数据 爬取内容 爬取源网站 爬取内容 爬取思路 爬取的数据 代码 获取房屋url 获取房屋具体信息 爬取内容 爬取源网站 北京二手房 https://bj.lianjia. ...

  9. 爬取链家网北京房源及房价分析

    爬取链家网北京房源及房价分析 文章开始把我喜欢的这句话送个大家:这个世界上还有什么比自己写的代码运行在一亿人的电脑上更酷的事情吗,如果有那就是让这个数字再扩大十倍 1.数据获取 # 获取某市区域的所有 ...

最新文章

  1. linux日志按天切割,Linux下用cronolog切割Tomcat日志并删除指定天数前的日志记录
  2. linux编辑conf文件命令,redhat linux7.3字符模式下: vi ***.conf 文件,又用什么命令才可编辑文件啊!!!!??...
  3. 宜搭数字工厂,让订单周期缩减三分之一
  4. python数组元素复制_python的numpy数组 的复制问题?
  5. 重要的,是那些训练中被多次遗忘的样本
  6. Linux bash学习
  7. HTML5 APP项目展示响应式网页模板
  8. HDU 5769 Substring(后缀数组)
  9. 恒流源差分放大电路静态分析_差分放大电路分析
  10. 【通俗易懂的通信】马尔可夫过Ⅲ:马尔可夫链的极限性态与平稳分布
  11. 漫步数学分析二十七——Stone-Weierstrass定理
  12. html万花筒相册旋转效果,jquery css3 3D万花筒图片相册展示特效
  13. 各种器件的灵敏度、精度、分辨率的区别
  14. 十年之后的人工智能会是什么样
  15. NCNN+Int8+yolov5部署和量化
  16. 日活、周活(周重活)、月活 统计
  17. 【Mysql】SQL性能分析
  18. C++ RALL机制浅谈
  19. win下连编socket时[Linker error] undefined reference to XXX
  20. 极竞而生 ChinaJoy 2021全球电竞大会圆满召开

热门文章

  1. 一个又离不开的软件:图形化远程控制APP向日葵
  2. Linux系统基础小白学习(更新中)
  3. 如何搭建一个自己的FTP服务器
  4. OpenOCD+GDB学习记录(1)
  5. 冬奥闭幕,冰雪产业将何去何从
  6. css实现icon动画效果
  7. cxf调用报错Could not find conduit initiator for address:
  8. 送给计算机老师的话,毕业送给老师的话短句
  9. html的div双线边框,设置div边框
  10. android Compose Modifier介绍