房天下新房信息爬取

引言

本篇博文是对上一篇文章中存在问题的修正,上一篇文章中使用了selenium来爬取页面,效率比较低,这篇文章中,我直接使用requests库进行爬取并且增强了程序的健壮性。

思路

上一篇文章中已经分析了,这里就不重复造轮子了,请出门,右转。
文章地址

代码

# !/usr/bin/env python
# —*— coding: utf-8 —*—
# @Time:    2020/2/8 9:08
# @Author:  Martin
# @File:    fang.py
# @Software:PyCharm
import requests
import re
import pymongo
from lxml import etreeclass FangSpider(object):def __init__(self):self.start_url = 'https://www.fang.com/SoufunFamily.htm'self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}self.client = pymongo.MongoClient(host='localhost', port=27017)self.db = self.client['fangtianxia']def run(self):try:response = requests.get(self.start_url, headers=self.headers)response.encoding = 'gbk'self.parse_page(response.text)except Exception as e:print(e)def parse_page(self, text):html = etree.HTML(text)a_list = html.xpath('//table[@id="senfe"]//td//a')china_house = []for a in a_list:city_url = "".join(a.xpath('@href'))city_name = "".join(a.xpath('text()'))if city_name == '海外':breakchina_house.append((city_name, city_url))self.parse_page_url(china_house)def parse_page_url(self, china_house):for city in china_house:(city_name, city_url) = citynew_house_url = 'http://' + city_url.split("//")[-1].split(".")[0] + '.newhouse.fang.com/house/s/'if city_name == '北京':new_house_url = 'http://newhouse.fang.com/house/s'html = self.parse_detail_page(new_house_url, city_name)try:end = "".join(html.xpath('//div[@class="page"]/ul/li[last()]/a[@class="last"]/@href')).strip()end_url = new_house_url + '/' + end.split('/')[-2]except:print("未找到结束页码!")continuei = 2while True:next_url = new_house_url + "/b9" + str(i)i += 1self.parse_detail_page(next_url, city_name)if next_url == end_url:breakdef parse_detail_page(self, url, city_name):try:r = requests.get(url, headers=self.headers)except Exception as e:print(e)return ""r.encoding = 'gbk'html = etree.HTML(r.text)li_list = html.xpath('//div[@id="newhouse_loupai_list"]//ul//li')for li in li_list:name = "".join(li.xpath('.//div[@class="nlcd_name"]/a/text()')).strip()origin_url = "http://" + "".join(li.xpath('.//div[@class="nlcd_name"]/a/@href')).strip()house_type = "".join(li.xpath('.//div[contains(@class,"house_type")]//text()'))house_type = re.sub(r'\s', "", house_type)address = "".join(li.xpath('.//div[@class="address"]/a/@title')).strip()price = "".join(li.xpath('.//div[@class="nhouse_price"]//text()'))price = re.sub(r'\s', "", price)sale = "".join(li.xpath('.//div[@class="fangyuan"]/span/text()'))label = "".join(li.xpath('.//div[@class="fangyuan"]//a//text()'))house = {'city_name': city_name,'name': name,'house_type': house_type,'address': address,'price': price,'sale': sale,'label': label,'origin_url': origin_url}print(house)self.save(house)return htmldef save(self, house):self.db.fangtianxia.insert_one(house)def close(self):self.client.close()if __name__ == '__main__':spider = FangSpider()spider.run()spider.close()

结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/38024.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

尚好房 07_前端房源展示

尚好房&#xff1a;前端房源展示 一、分页显示房源列表 1、效果 2、项目搭建 2.1 创建项目 在web项目中创建子工程web-front 2.2 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0&…

年轻人住房实录:有人住进毛坯房,有人选择二手房

NEW 关注Tech逆向思维视频号 最新视频→【男生的秋裤&#xff0c;女生的打底裤&#xff0c;哪个更抗冻&#xff1f;】 出品&#xff5c;刺猬公社 文 &#xff5c;晓含 编辑 | 石灿 毛坯房、乡下别墅、二手房&#xff0c;年轻人正在“逃离”租房。 年轻人住毛坯房成了“流行”。…

C#之DataSet和DataTable 的介绍

1.DataSet是什么 DateSet在c#程序中建立一个临时数据库 下图所示&#xff1a; 概述 可以把DataTable和DataSet看做是数据容器&#xff0c;比如你查询数据库后得到一些结果&#xff0c;可以放到这种容器里&#xff0c;那你可能要问&#xff1a;我不用这种容器&#xff0c;自…

Python北京二手房房价数据集分析

本次分析的数据集来源为链家2017年房源信息。 在数据分析的过程中,我们也可以先去理解数据,再提出问题,在探索数据的过程当中,我们往往会发现很多有趣的事情~ 1.提出问题 北京二手房的房价跟哪些因素有关呢? 2.读取数据,理解数据 导入数据分析相关工具包 %matplotlib 为魔…

Python之爬取58同城在售楼盘房源信息

上一篇博客以爬取《你好&#xff0c;李焕英》豆瓣热门短评来作为爬虫入门小案例&#xff0c;这一篇博客主要以石家庄市为例&#xff0c;爬取58同城在售楼盘房源信息&#xff0c;主要包括以下字段&#xff1a;小区名称&#xff0c;所在区&#xff0c;地址以及均价等&#xff0c;…

成都二手房房价分析-数据挖掘

PricesDataAnalysis 本项目使用jupyter notebook开发&#xff0c;主要目的是分析成都二手房房价&#xff0c;项目地址。 数据&#xff1a;爬取二手房交易网站近期数据&#xff0c;成都各个区域交易热度较高的房屋信息。 爬虫项目地址 目标&#xff1a;分析成都各区域二手房市…

爬虫+数据分析:重庆买房吗?爬取重庆房价

现在结婚&#xff0c;女方一般要求城里有套房。要了解近些年的房价&#xff0c;首先就要获取网上的房价信息&#xff0c;今天以重庆链家网上出售的房价信息为例&#xff0c;将数据爬取下来分析。 爬虫部分 一.网址分析 https://cq.fang.lianjia.com/loupan/ 下面我们来分析我…

【大数据基础】厦门租房信息分析展示

https://dblab.xmu.edu.cn/blog/2307/ 实验部分 爬虫程序 首先在工程文件夹下创建名叫rentspider的Python文件。 # -*- coding: utf-8 -*- import requests from bs4 import BeautifulSoup import csv# num表示记录序号 Url_head "http://fangzi.xmfish.com/web/searc…

Python数据分析基础 寻找出挂牌价最高的四套房,并输出相应的房源信息。

假设字典 house 存放了某小区在售二手房的房源信息&#xff08;见表 1&#xff09;&#xff0c; 试编写程序&#xff0c;实现以下功能&#xff1a; &#xff08;1&#xff09;请编写程序寻找出挂牌价最高的四套房和挂牌价最低的四套房&#xff0c;并输出相应的房源信息。 &am…

解决.net中使用gmail.com邮箱进行Smtp发送信件时失败的问题

我经常使用免费的gmail.com邮箱&#xff0c;因为它容量较大&#xff0c;但我们在使用.net编程实现邮件发送时&#xff0c;常会出现我们意想不到的错误。最常见的就是&#xff1a; &#xff08;1&#xff09;The operation has timed out. &#xff08;2&#xff09;出现类似提…

outlook登陆邮件接收服务器(POP3)失败问题

用outlook管理qq邮件时&#xff0c;可能会遇到无法登陆问题&#xff1a; 可能的错误之一是&#xff1a;在配置账号密码时&#xff0c;不是输入邮箱的登陆密码&#xff0c; 而是要输入qq邮箱中 提供的授权码&#xff1a; 这样问题即可解决&#xff01;

Contact form 7表单无法发送邮件的解决办法

在使用Bluehost主机做网站时&#xff0c;我们常常会遇到Contact form 7表单无法发送邮件的情况&#xff0c;收不到邮件&#xff0c;客户发的询盘就收不到&#xff0c;这就是很大的问题了。由于这个主机是自带邮箱系统的&#xff0c;因此我们用第三方的邮件系统就会出现被Blueho…

邮件服务器imap有推送吗,为什么我的邮件服务器支持imap协议还收不到邮件内容...

满意答案 qk2523 2017.04.05 采纳率&#xff1a;48% 等级&#xff1a;7 已帮助&#xff1a;163人 支持imap协议和能不能收到邮件没有什么关系。 1、使用Web方式可以正常接收邮件&#xff0c;但使用Outlook等客户端无法接收邮件。 a)邮件系统所在的服务器安装了其他杀毒软件&…

关于common-email 发送邮件失败问题!!!

1.首先说明一下场景&#xff1a; 邮件服务器为&#xff1a;腾讯的企业邮箱服务器&#xff0c; 有文档说明&#xff1a;http://service.exmail.qq.com/cgi-bin/help?id28&no1000585&subtype1&#xff0c; POP3/SMTP协议 接收邮件服务器&#xff1a;pop.exmail.qq.com …

邮件发送与接收,支持163邮箱、outlook邮箱、exchange邮箱

邮件发送与接收&#xff0c;支持163邮箱、outlook邮箱、exchange邮箱 收件箱支持条件搜索收件与发件均支持上传附件 依赖的jar包 邮件收发公共服务层实现 package com.example.demo.service.impl;import com.example.demo.model.EmailMessageBO; import com.example.demo.mo…

手把手教你设置foxmail客户端支持收发outlook.com邮箱里的邮件

话不多说&#xff0c;入正题啦1&#xff0c;下载安装foxmail客户端&#xff0c;也有免安装版的&#xff0c;这里不作介绍。地址&#xff1a;http://fox.foxmail.com.cn/2&#xff0c;打开foxmail软件&#xff0c;点击“工具”— 帐号管理 3&#xff0c;点击左下角的“新建”按钮…

举个栗子~Tableau 技巧(244):用和弦图(Chord diagram)呈现数据关系

关于和弦图 和弦图&#xff08;Chord diagram&#xff09;常用来表示数据之间的相互关系。数据点沿着圆圈分布&#xff0c;通过点和点之间相互连接的弧线来呈现相互之间的关系。和弦图从视觉上来说比较美观&#xff0c;数据呈现又很直观&#xff0c;所以深受数据粉喜爱。 之前…

HuggingGPT 火了:一个 ChatGPT 控制所有 AI 模型,自动帮人完成 AI 任务,网友:留口饭吃吧..._QbitAl 的博客 - CSDN 博客

转载自&#xff1a;https://blog.csdn.net/QbitAI/article/details/129942855 丰色 发自 凹非寺 量子位 | 公众号 QbitAI 最强组合&#xff1a;HuggingFaceChatGPT —— HuggingGPT&#xff0c;它来了&#xff01; 只要给定一个 AI 任务&#xff0c;例如 “下面这张图片里…

“寻找贾维斯”简史

可能人人都希望自己有个“贾维斯”。 虽然已经退出漫威电影很多年&#xff0c;但是我们还是能够记起那个钢铁侠战衣里无所不能的AI助手。独特的幽默、优雅的语调&#xff0c;以及非常靠谱的人设&#xff0c;让无数科幻迷对这个看不见听得到的角色产生了无尽好感。 对贾维斯的…