iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python使用爬虫爬取贵阳房价的方法详解
  • 513
分享到

Python使用爬虫爬取贵阳房价的方法详解

2024-04-02 19:04:59 513人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录1序言1.1生存压力带来的哲思1.2 买房&房奴2爬虫 2.1基本概念2.2 爬虫的基本流程 3爬取贵阳房价并写入表格3.1结果展

1 序言

1.1 生存压力带来的哲思

马尔萨斯最早发现,生物按照几何级数高度增殖的天赋能力,总是大于他们的实际生存能力或现实生存群量,依次推想,生物的种内竞争一定是极端残酷且无可避免。姑且不论马尔萨斯是否有必要给人类提出相应的警告,仅是这一现象中隐含的一系列基础问题,譬如,生物的超量繁殖能力的自然限度何在?种内竞争的幸存者依靠什么优势来取胜?以及这些所谓的优势群体如何将自己引向何方?等等,就足以引起任何一位有思想的人不能不怵然(恐惧)深思。

后来,达尔文在他的那部划时代的《物种起源》一书的绪论中,特意提及马尔萨斯学说的科学贡献和启迪作用,可见要成为那个马老教士的知音,并不是一般人够资格的!

1.2 买房&房奴

现在结婚,女方一般要求男方有房有车,其实也不能怪人家女孩子,在社会社会高度发展、动荡的今天,这个要求确实不高。奈何改革开放以来,阶级固化,吾辈难矣!先看看贵阳房价(链家新房:https://gy.fang.lianjia.com/)

不能被时代淘汰了,不能总唉声叹气的,白手起家的的大资本家寥寥无几,人家刘强东就是一个。偶像归偶像,回到现实中来吧,农村孩子,可能买了房,就可能是一辈子的房奴,回到农村,表面光鲜亮丽的被别人崇拜着,心里的苦和委屈只有自己知道。鉴于此,我个人不想做房奴车奴,快乐是自己的,生活是自己的,活出自己的精彩,不是活给别人看的,我想让自己命运的旖旎风景绚丽多姿,现阶段要做的是提升自己能力,不想做房奴!

心血澎湃,感叹完了,该回到今天的主题。何不把这些数据弄到一个文档表格里面分析分析,说干就干,就用爬虫爬取吧,然后写入文档。

2 爬虫 

2.1 基本概念

网络爬虫(Crawler):又称网络蜘蛛,或者网络机器人(Robots). 它是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。换句话来说,它可以根据网页的链接地址自动获取网页内容。如果把互联网比做一个大蜘蛛网,它里面有许许多多的网页,网络蜘蛛可以获取所有网页的内容。

爬虫是一个模拟人类请求网站行为, 并批量下载网站资源的一种程序或自动化脚本。

  • 爬虫:使用任何技术手段,批量获取网站信息的一种方式。关键在于批量。
  • 反爬虫:使用任何技术手段,阻止别人批量获取自己网站信息的一种方式。关键也在于批量。
  • 误伤:在反爬虫的过程中,错误的将普通用户识别为爬虫。误伤率高的反爬虫策略,效果再好也不能用。
  • 拦截:成功地阻止爬虫访问。这里会有拦截率的概念。通常来说,拦截率越高的反爬虫策略,误伤的可能性就越高。因此需要做个权衡。
  • 资源:机器成本与人力成本的总和。

2.2 爬虫的基本流程 

(1)请求网页:通过 Http 库向目标站点发起请求,即发送一个 Request,请求可以包含额外的 headers 等
信息,等待服务器响应!

(2)获得相应内容:如果服务器能正常响应,会得到一个 Response,Response 的内容便是所要获取的页面内容,类型可能有 htmlJSON 字符串,二进制数据(如图片视频)等类型。

(3)解析内容:得到的内容可能是 HTML,可以用正则表达式、网页解析库进行解析。可能是 json,可以
直接转为 Json 对象解析,可能是二进制数据,可以做保存或者进一步的处理。

(4)存储解析的数据:保存形式多样,可以存为文本,也可以保存至数据库,或者保存特定格式的文件

测试案例:代码 实现: 爬取贵阳房价的页面数据

#==========导 包=============
import requests
#=====step_1 : 指 定 url=========
url = 'https://gy.fang.lianjia.com/ /'
#=====step_2 : 发 起 请 求 :======
#使 用 get 方 法 发 起 get 请 求 , 该 方 法 会 返 回 一 个 响 应 对 象 。 参 数 url 表 示 请 求 对 应 的 url
response = requests . get ( url = url )
#=====step_3 : 获 取 响 应 数 据 :===
#通 过 调 用 响 应 对 象 的 text 属 性 , 返 回 响 应 对 象 中 存 储 的 字 符 串 形 式 的 响 应 数 据 ( 页 面 源 码数 据 )
page_text = response . text
#====step_4 : 持 久 化 存 储=======
with open ('贵阳房价 . html ','w', encoding ='utf -8') as fp:
    fp.write ( page_text )
print (' 爬 取 数 据 完 毕 !!!')

爬 取 数 据 完 毕 !!!
Process finished with exit code 0

3 爬取贵阳房价并写入表格

3.1 结果展示

3.2 代码实现(Python) 

#==================导入相关库==================================
from bs4 import BeautifulSoup
import numpy as np
import requests
from requests.exceptions import  RequestException
import pandas as pd
#=============读取网页=========================================
def craw(url,page):
    try:
        headers = {
            "User-Agent": "Mozilla/5.0 (windows NT 10.0; WOW64) AppleWEBKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36"}
        html1 = requests.request("GET", url, headers=headers,timeout=10)
        html1.encoding ='utf-8' # 加编码,重要!转换为字符串编码,read()得到的是byte格式的
        html=html1.text
        return html
    except RequestException:#其他问题
        print('第{0}读取网页失败'.fORMat(page))
        return None
#==========解析网页并保存数据到表格======================
def pase_page(url,page):
    html=craw(url,page)
    html = str(html)
    if html is not None:
        soup = BeautifulSoup(html, 'lxml')
        "--先确定房子信息,即li标签列表--"
        houses=soup.select('.resblock-list-wrapper li')#房子列表
        "--再确定每个房子的信息--"
        for j in range(len(houses)):#遍历每一个房子
            house=houses[j]
            "名字"
            recommend_project=house.select('.resblock-name a.name')
            recommend_project=[i.get_text()for i in recommend_project]#名字 英华天元,斌鑫江南御府...
            recommend_project=' '.join(recommend_project)
            #print(recommend_project)
            "类型"
            house_type=house.select('.resblock-name span.resblock-type')
            house_type=[i.get_text()for i in house_type]#写字楼,底商...
            house_type=' '.join(house_type)
            #print(house_type)
            "销售状态"
            sale_status = house.select('.resblock-name span.sale-status')
            sale_status=[i.get_text()for i in sale_status]#在售,在售,售罄,在售...
            sale_status=' '.join(sale_status)
            #print(sale_status)
            "大地址"
            big_address=house.select('.resblock-location span')
            big_address=[i.get_text()for i in big_address]#
            big_address=''.join(big_address)
            #print(big_address)
            "具体地址"
            small_address=house.select('.resblock-location a')
            small_address=[i.get_text()for i in small_address]#
            small_address=' '.join(small_address)
            #print(small_address)
            "优势。"
            advantage=house.select('.resblock-tag span')
            advantage=[i.get_text()for i in advantage]#
            advantage=' '.join(advantage)
            #print(advantage)
            "均价:多少1平"
            average_price=house.select('.resblock-price .main-price .number')
            average_price=[i.get_text()for i in average_price]#16000,25000,价格待定..
            average_price=' '.join(average_price)
            #print(average_price)
            "总价,单位万"
            total_price=house.select('.resblock-price .second')
            total_price=[i.get_text()for i in total_price]#总价400万/套,总价100万/套'...
            total_price=' '.join(total_price)
            #print(total_price)
            #=====================写入表格=================================================
            information = [recommend_project, house_type, sale_status,big_address,small_address,advantage,average_price,total_price]
            information = np.array(information)
            information = information.reshape(-1, 8)
            information = pd.DataFrame(information, columns=['名称', '类型', '销售状态','大地址','具体地址','优势','均价','总价'])
            information.to_csv('贵阳房价.csv', mode='a+', index=False, header=False)  # mode='a+'追加写入
        print('第{0}页存储数据成功'.format(page))
    else:
        print('解析失败')
#==================双线程=====================================
import threading
for i  in range(1,100,2):#遍历网页1-101
    url1="https://gy.fang.lianjia.com/loupan/pg"+str(i)+"/"
    url2 = "https://gy.fang.lianjia.com/loupan/pg" + str(i+1) + "/"
    t1 = threading.Thread(target=pase_page, args=(url1,i))#线程1
    t2 = threading.Thread(target=pase_page, args=(url2,i+1))#线程2
    t1.start()
    t2.start()v

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!     

--结束END--

本文标题: Python使用爬虫爬取贵阳房价的方法详解

本文链接: https://www.lsjlt.com/news/138828.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python使用爬虫爬取贵阳房价的方法详解
    目录1序言1.1生存压力带来的哲思1.2 买房&房奴2爬虫 2.1基本概念2.2 爬虫的基本流程 3爬取贵阳房价并写入表格3.1结果展...
    99+
    2024-04-02
  • 怎么使用python爬虫爬取二手房数据
    这篇文章主要介绍怎么使用python爬虫爬取二手房数据,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型)、long(长整型)和floa...
    99+
    2023-06-14
  • python爬虫爬取指定内容的解决方法
    目录解决办法:实列代码如下:(以我们学校为例)爬取一些网站下指定的内容,一般来说可以用xpath来直接从网页上来获取,但是当我们获取的内容不唯一的时候我们无法选择,我们所需要的、所指...
    99+
    2024-04-02
  • python爬虫实战之爬取百度首页的方法
    这篇文章给大家分享的是有关python爬虫实战之爬取百度首页的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Python对代...
    99+
    2023-06-14
  • python爬虫之requests库的使用详解
    目录python爬虫—requests库的用法基本的get请求带参数的GET请求:解析json使用代理获取cookie会话维持证书验证设置超时异常捕获异常处理 总结 python爬虫...
    99+
    2024-04-02
  • Python爬虫框架NewSpaper使用详解
    目录写在前面newspapernewspaper框架的使用例如:单条新闻内容获取newspaper文章缓存其他功能写在后面写在前面 原计划继续写一篇Portia的使用博客,结果在编写...
    99+
    2024-04-02
  • Python爬虫的两套解析方法和四种爬虫实现
    【本文转载自微信公众号:数据科学家养成记,作者:louwill,转载授权请联系原作者】 对于大多数朋友而言,爬虫绝对是学习python的最好的起手和入门方式。因为爬虫思维模式固定,编程模式也相对简单,一般在细节处理上积累一些经验都...
    99+
    2023-06-02
  • python爬虫http代理使用方法
    目前,许多网站都设置了相应的防爬虫机制。这是因为有些人在实际的防爬虫主权过程中恶意收集或恶意攻击。一般来说,爬虫类开发者为了能够正常收集数据,速度相对较慢,或者一部分爬虫类开发者在网...
    99+
    2024-04-02
  • Python爬虫Requests库的使用详情
    目录一、Requests库的7个主要的方法二、Response对象的属性三、爬取网页通用代码四、Resquests库的常见异常五、Robots协议展示六、案例展示一、Requests...
    99+
    2024-04-02
  • Python爬虫库urllib的使用教程详解
    目录Python urllib库urllib.request模块urlopen函数Request 类urllib.error模块URLError 示例HTTPError示例...
    99+
    2022-11-21
    Python爬虫库urllib使用 Python urllib使用 Python urllib
  • 通过python爬虫mechanize库爬取本机ip地址的方法
    目录需求分析实现分析实际使用完整代码演示需求分析 最近,各平台更新的ip属地功能非常火爆,因此呢,也出现了许多新的网络用语,比如说“xx加几分”,&ldquo...
    99+
    2024-04-02
  • Python爬虫之线程池的使用方法
    这篇文章主要介绍了Python爬虫之线程池的使用方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、前言学到现在,我们可以说已经学习了爬虫的基础知识,如果没有那些奇奇怪怪的...
    99+
    2023-06-15
  • Python实现爬取房源信息的示例详解
    目录前言分析页面,寻找切入点爬取数据整理数据,导出文件前言 最近由于工作突然变动,新的办公地点离现在的住处很远,必须要换房子租了。 我坐上中介的小电驴,开始探索城市各处的陌生角落。 ...
    99+
    2024-04-02
  • python爬虫beautiful soup的使用方式
    目录前言一,Beautiful Soup简介二,Beautiful Soup的解析器2.1 各种解析器一览2.2 引入解析器的语法三,Beautiful Soup解析得到的四种对象3...
    99+
    2024-04-02
  • python爬虫获取数据的方法是什么
    Python爬虫获取数据的方法有以下几种:1. 使用第三方库:Python有很多强大的第三方库,如Requests、Beautifu...
    99+
    2023-10-19
    python
  • 使用PHP编写爬虫的方法
    本篇内容介绍了“使用PHP编写爬虫的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!说到爬虫,大家的第一印象就会想到Python, 但是P...
    99+
    2023-06-20
  • Python 爬虫使用代理 IP 的正确方法
    代理 IP 是爬虫中非常常用的方法,可以避免因为频繁请求而被封禁。下面是 Python 爬虫使用代理 IP 的正确方法: 选择可靠的代理 IP 供应商,购买或者免费使用代理 IP 列表。 2. 在爬虫中使用第三方库 requests ,并...
    99+
    2023-09-01
    python 开发语言
  • python爬虫使用request库处理cookie的方法
    这篇文章给大家分享的是有关python爬虫使用request库处理cookie的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向...
    99+
    2023-06-14
  • 详解如何使用Python网络爬虫获取招聘信息
    目录前言项目目标项目准备反爬措施项目实现效果展示小结前言 现在在疫情阶段,想找一份不错的工作变得更为困难,很多人会选择去网上看招聘信息。可是招聘信息有一些是错综复杂的。而且不能把全部...
    99+
    2024-04-02
  • Python爬虫实现自动化爬取b站实时弹幕的方法
    这篇文章主要介绍了Python爬虫实现自动化爬取b站实时弹幕的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Python主要用来做什么Python主要应用于:1、Web开...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作