Python 爬取 房天下

...

import requests
from requests import ConnectionError
from bs4 import BeautifulSoup
import pymongo

#MongoDB的配置
MONGO_URL = ‘localhost‘
MONGO_DB = ‘Fangtianxia‘
MONGO_TABLE = ‘HouseInfo‘
#配置MongoDB
client = pymongo.MongoClient(MONGO_URL)
db = client[MONGO_DB]

base_url = ‘http://esf.sz.fang.com/housing/__1_0_0_0_‘
headers = {
    ‘User-Agent‘:‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36‘
}

#发送请求,获得响应
def get_html(url):
    print(‘正在爬取‘,url)
    try:
        response = requests.get(url=url,headers=headers)
        if response.status_code == 200:
            return response.text
        else:
            print(response.status_code)
            return None
    except ConnectionError:
        print(‘出现错误!‘)
        return None

#解析响应体,进行信息提取
def parser_html(html):
    soup = BeautifulSoup(html,‘lxml‘)
    names = soup.select(‘.houseList .list .plotListwrap dd p‘)[::3]#小区名称、小区链接、
    addresses = soup.select(‘.houseList .list .plotListwrap dd p‘)[1::3]  # 小区地址
    years = soup.select(‘.houseList .list .plotListwrap dd li‘)[::3]#修建时间
    princes = soup.select(‘.houseList .list .listRiconwrap .priceAverage‘)#小区价格
    ratioes = soup.select(‘.houseList .list .listRiconwrap .ratio‘)#小区涨幅
    for i in range(len(names)):
        house ={
            ‘name‘ : names[i].a.text.strip(),
            ‘url‘: names[i].find(name=‘a‘).attrs[‘href‘].strip(),
            ‘address‘:addresses[i].text.strip(),
            ‘prince‘:princes[i].text.strip()[:-4],
            ‘ratio‘: ratioes[i].text.strip()
        }
        save_to_mongo(house)

def save_to_mongo(data):
    try:
        if db[MONGO_TABLE].insert(data):
            print(‘成功保存到数据库‘,data)
    except Exception:
        print(‘保存失败!‘,data)

#主体函数
def main():
    for page in range(1,101):
        url  = base_url + str(page) +‘_0_0_0/‘#深圳的小区房价,不同页码下的url
        html = get_html(url)#完成请求,获得响应体
        parser_html(html)#解析响应体,提取感兴趣的信息

if __name__==‘__main__‘:
    main()

原文地址:https://www.cnblogs.com/mysterious-killer/p/10156929.html

时间: 2024-11-05 16:27:05

Python 爬取 房天下的相关文章

Python爬虫爬取房天下数据-入MySql数据库

Python爬取房天下某城市数据 随着互联网时代的兴起,技术日新月异,掌握一门新技术对职业发展有着很深远的意义,做的第一个demo,以后会在爬虫和数据分析方便做更深的研究,本人不会做详细的文档,有哪里不足的地方,希望大牛们指点讲解.废话不多说,上代码. 你需要的技能: (1)对前端知识熟悉会调试浏览器 (2)熟练python基础知识,对一些常用的库熟练掌握 (3)掌握一般关系型数据库 import requests as req import time import pandas as pd f

详解Python 采用 requests + Beautiful Soup 爬取房天下新楼盘推荐

最近一直在关注Python写爬虫相关的知识,尝试了采用requests + Beautiful Soup来爬取房天下(原搜房网)的推荐新楼盘. 不用不知道,一用发现有惊喜也有惊吓,本文就一同记录下惊喜和踩的一些乱码的坑. 首先,觉得Beautiful soup解析网页更加符合人类的常规思维,比使用正则表达式(python中的re库)更容易理解. 同时关于requests遇到了中文字符和特殊字符解码的问题.本文都将给于深入的解说. 软件环境 Python    : 3.6.0 PyCharm: C

多线程爬取房天下数据,并且存储到mysql

下面是源代码,大神勿喷...... # -*- coding: utf-8 -*- import requests,time,urllib.request,os,re,xlwt import threading,random,threadpool import pymongo,pymysql,logging from multiprocessing import Process from lxml import etree from pymongo import MongoClient impo

使用python爬取csdn博客访问量

最近学习了python和爬虫,想写一个程序练练手,所以我就想到了大家都比较关心的自己的博客访问量,使用python来获取自己博客的访问量,这也是后边我将要进行的项目的一部分,后边我会对博客的访问量进行分析,以折线图和饼图等可视化的方式展示自己博客被访问的情况,使自己能更加清楚自己的哪些博客更受关注,博客专家请勿喷,因为我不是专家,我听他们说专家本身就有这个功能. 一.网址分析 进入自己的博客页面,网址为:http://blog.csdn.net/xingjiarong 网址还是非常清晰的就是cs

python爬取某个网站的图片并保存到本地

python爬取某个网站的图片并保存到本地 #coding:utf-8 import urllib import re import sys reload(sys) sys.setdefaultencoding('gb2312') #获取整个页面的数据 def getHtml (url): page = urllib.urlopen(url) html = page.read() return html #保存图片到本地 def getImg(html): reg = r'src="(.+?\.

python爬取某个网页的图片-如百度贴吧

python爬取某个网页的图片-如百度贴吧 作者:vpoet 日期:大约在冬季 注:随意copy,不用告诉我 #coding:utf-8 import urllib import urllib2 import re if __name__ =="__main__": rex=r'src="(http://imgsrc.baidu.com/forum/w%3D580.*?\.jpg)"'; Response=urllib2.urlopen("http://t

使用python爬取MedSci上的影响因子排名靠前的文献

使用python爬取medsci上的期刊信息,通过设定条件,然后获取相应的期刊的的影响因子排名,期刊名称,英文全称和影响因子.主要过程如下: 首先,通过分析网站http://www.medsci.cn/sci的交互过程.可以使用谷歌或火狐浏览器的“审查元素-->Network”,然后就可以看到操作页面就可以看到网站的交互信息.当在网页上点击“我要查询”时,网页会发送一个POST消息给服务器,然后,服务器返回查询结果 然后,将查询到的结果使用正则表达式提取出需要的数据. 最后将提取出的数据输出到文

Python爬取网页的三种方法

# Python爬取网页的三种方法之一:  使用urllib或者urllib2模块的getparam方法 import urllib fopen1 = urllib.urlopen('http://www.baidu.com').info() fopen2 = urllib2.urlopen('http://www.sina.com').info() print fopen1.getparam('charset') print fopen2.getparam('charset') #----有些

Python爬取京东商品数据

对京东某一商品信息页面的HTML代码进行分析,可以发现它的图书产品信息页面都含有这样一段代码(不同类的商品页面有些不同): window.pageConfig={compatible:true,searchType: 1,product:{"skuid":"11408255","name":"\u4f17\u795e\u7684\u536b\u661f\uff1a\u4e2d\u56fd\u7981\u533a","