房价python爬取_python爬取并解析 重庆2015-2019房价走势

1 #! /usr/bin/env python

2 #-*- coding:utf-8 -*-

3

4 '''

5 Created on 2019年11月24日6

7 @author: Admin8 '''

9

10 importrequests11 from lxml importetree12 importtime13 importcsv14

15 '''

16 方法名称:spider17 功能: 爬取目标网站,并以源码文本18 参数: url 目标网址19 '''

20

21

22 defspider(url):23 try:24 header ={25 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36',26 'cookie':'TY_SESSION_ID=150d5f1d-3be9-47b7-8728-f5b0673e307d; lianjia_uuid=22c2fd7c-bd33-4b52-b13c-0455483c8c53; _smt_uid=5dda86a6.5152533e; UM_distinctid=16e9d9dfc04451-098d8fb5ad92f6-e353165-1fa400-16e9d9dfc05a07; _ga=GA1.2.1829982433.1574602409; digv_extends=%7B%22utmTrackId%22%3A%2221583074%22%7D; _jzqa=1.3521694123893513000.1574602407.1574773117.1575120474.3; _jzqc=1; _jzqckmp=1; _gid=GA1.2.1091277813.1575120477; CNZZDATA1255849584=948253718-1574601020-https%253A%252F%252Fwww.baidu.com%252F%7C1575116340; CNZZDATA1254525948=3090229-1574602304-https%253A%252F%252Fwww.baidu.com%252F%7C1575120323; _qzjc=1; CNZZDATA1255604082=2128363916-1574597104-https%253A%252F%252Fwww.baidu.com%252F%7C1575119427; lianjia_ssid=923a34dd-a281-4f27-8dd2-5acf42342745; Hm_lvt_9152f8221cb6243a53c83b956842be8a=1574602407,1574773116,1575120687; _jzqy=1.1574602407.1575120687.3.jzqsr=baidu|jzqct=%E9%87%8D%E5%BA%86%E6%88%BF%E7%BD%91.jzqsr=baidu; select_city=500000; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2216e9d9dfd30306-0d0ad150c956ec-e353165-2073600-16e9d9dfd319bc%22%2C%22%24device_id%22%3A%2216e9d9dfd30306-0d0ad150c956ec-e353165-2073600-16e9d9dfd319bc%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_referrer%22%3A%22%22%2C%22%24latest_referrer_host%22%3A%22%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_utm_source%22%3A%22baidu%22%2C%22%24latest_utm_medium%22%3A%22pinzhuan%22%2C%22%24latest_utm_campaign%22%3A%22sousuo%22%2C%22%24latest_utm_content%22%3A%22biaotimiaoshu%22%2C%22%24latest_utm_term%22%3A%22biaoti%22%7D%7D; CNZZDATA1255633284=795194134-1574597808-https%253A%252F%252Fwww.baidu.com%252F%7C1575120759; Hm_lpvt_9152f8221cb6243a53c83b956842be8a=1575121032; _qzja=1.2113280281.1574602406885.1574773116776.1575120645619.1575120907050.1575121031859.0.0.0.46.3; _qzjb=1.1575120645619.11.0.0.0; _qzjto=11.1.0; _jzqb=1.15.10.1575120474.1; srcid=eyJ0Ijoie1wiZGF0YVwiOlwiZTZiZTc4OGQ0MGZlZDJlZmZhNjRmMGYyNmJhNGM5NDBlZWZkMmM5N2Y0MzU2MmYyYzY2ZjQwMzZhNTk1MTI1M2ZiZjc2OGU3ODEzODBhZTYzMzNiOWZkZTExNTBkMmIxY2FhMzlmMzZmMTM5NGU0YmEwYmY5OTdlNDI5NmRiYTVjYzA5NmNkY2JkZmZkNWRmZmVhZWU1MDFjZjU0NTgyOTU0ZTkxZmVkZjhhYmI3ODc1YjJlNjA2Yzk3ZWRhNDJlYWUxZTBiZGJlMjBkNjQ2MWRkZDU3ZDRkOTE5ZTM0NDUwNDZjODNiZjE5ZGI3MzQ1MjU1YWFmNmRkZWJhZDJkZDNjMjk2MGFjNzIxNGY2YWY2Y2JkOWM5ZDcxYTU5N2FhMzMwMTJjNzNlNGEwNjhiOGI3MzEzMzIyYzM0NmVkM2ZcIixcImtleV9pZFwiOlwiMVwiLFwic2lnblwiOlwiNDNlZDc3OGJcIn0iLCJyIjoiaHR0cHM6Ly9jcS5saWFuamlhLmNvbS9jaGVuZ2ppYW8vIiwib3MiOiJ3ZWIiLCJ2IjoiMC4xIn0=',27 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',28 'upgrade-insecure-requests': '1',29 }30 response = requests.get(url=url, headers=header)31 #print(response.text)

32 returnresponse.text33 except:34 print('failed to spider the target site, please check if the url is correct or the connection is available!')35

36

37 '''

38 方法名称:spider_detail39 功能: 解析html源码,提取房屋参数40 参数: url 目标网址41 '''

42

43

44 defspider_detail(url):45 response_text =spider(url)46 sel =etree.HTML(response_text)47 for house_num in range(1, 31):48 try:49 house_info = sel.xpath('/html/body/div[5]/div[1]/ul/li[%d]/div/div[1]/a/text()'

50 % house_num)[0].strip().split(' ')51 house_name =house_info[0]52 house_mode = house_info[1]53 house_area = house_info[2].strip('平米')54

55 house_prim_money = sel.xpath('/html/body/div[5]/div[1]/ul/li[%d]/div/div[4]/span[2]/span[1]/text()'

56 %house_num)[0].strip()57 house_sale_time = sel.xpath('/html/body/div[5]/div[1]/ul/li[%d]/div/div[2]/div[2]/text()'

58 % house_num)[0].strip().split('.')[0]59 house_price = sel.xpath('/html/body/div[5]/div[1]/ul/li[%d]/div/div[3]/div[3]/span/text()'

60 % house_num)[0].strip().strip("单价").strip("元/平米")61 house_totle = sel.xpath('/html/body/div[5]/div[1]/ul/li[%d]/div/div[2]/div[3]/span/text()'

62 %house_num)[0].strip()63 house_url = sel.xpath('/html/body/div[5]/div[1]/ul/li[%d]/div/div[1]/a/@href'

64 %house_num)[0].strip()65 house_data =[house_name, house_area, house_mode, \66 house_sale_time, house_prim_money, house_price, house_totle, house_url]67 save_csv(house_data)68

69 exceptException as e:70 print(e)71 print("参数错误")72

73

74 '''

75 方法名称:save_csv76 功能: 将数据按行储存到csv文件中77 参数: house_data 获取到的房屋数据列表78 '''

79

80

81 defsave_csv(house_data):82

83 try:84 with open('E:/chongqing/cq_chengjiao_jiangbei_year.csv', 'a', encoding='utf-8-sig', newline='') as f:85 writer =csv.writer(f)86 writer.writerow(house_data)87 except:88 print('write csv error!')89

90

91 '''

92 方法名称:get_all_urls93 功能: 生成所有所有的url并存放到迭代器中94 参数: page_number 需要爬网页总数95 返回值: url 返回一个url的迭代96 '''

97

98

99 defget_all_urls(page_number):100 if (type(page_number) == type(1) and page_number > 0): #防止错误输入

101 for page in range(1, page_number + 1):102 url = 'https://cq.lianjia.com/chengjiao/jiangbei/pg'+str(page)+'l3a4a5/'

103 yieldurl104 else:105 print('page_number is incorrect!')106

107

108 #csv首列写入

109 save_csv(['house_name', 'house_area', 'house_mode', \110 'house_sale_time', 'house_prim_money', 'house_price', 'house_totle', 'house_url'])111

112 for url in get_all_urls(100):113 try:114 time.sleep(5)115 spider_detail(url)116 exceptException as e:117 print(e)118 print('An error has been occurred when spidering house-price of chongqing!')

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

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

相关文章

PHP递归删除目录面试题,PHP 递归删除目录中文件

/*** 递归删除目录中文件* param $pathname* return bool*/public static function delDir($pathname)//要删除的目录{if(file_exists($pathname)) {if(is_file($pathname)) {unlink($pathname);} else {$dir opendir($pathname);while($filename readdir($dir)) {if($filena…

python中 12_python编程中常用的12种基础知识总结

1、正则表达式替换目标: 将字符串line中的 overview.gif 替换成其他字符串>>> line >>> more.compile(r(?<SRC)"([\w\.])",re.I)>>> mo.sub(r"\1****",line)>>> mo.sub(rreplace_str_\1,line)< /span>>&…

php smarty分页原理,SMARTY分页详解

<?phprequire_once (include/common.inc.php);//这里是个接口common.inc.php里面包函了一些常用到的函数类库以及SMARTYinclude_once(header.php);//调用头部信息,SESSION的信息全都保存在这里,这样做的好处是几乎所有的页面都不需要在开头输入session_start();$smarty new…

python十个一行_python 如何将一系列数字十个一行输出

展开全部答案如下&#xff1a;代码详解1、使用循环输出列表&#xff0c;利用 计数器控制输出数量&#xff0c;当输出到第十个&#xff0c;62616964757a686964616fe4b893e5b19e31333365663532计数器归零&#xff0c;重新开始计数2、print输出增加end参数可以控制输出后以什么结尾…

sql oracle 递归查询语句,Oracle使用SQL语句进行递归查询

idpid问题描述&#xff1a;102031415262738495取出id为1及其下属的所有的数据,结果为下idpid1031417384SQL> CREATE TABLE TBL_TEST2 (3 ID NUMBER,4 NAME VARCHAR2(100 BYTE),5 PID NUMBER DEFAULT 06 );Table createdS…

python中与0xf2相等的是_python中__str__与__repr__

(1)背景python中&#xff0c;对于类(自定义类)的实例对象的默认显示既没有太大用处&#xff0c;也不美观。比如&#xff1a;1 classadder:2 def __init__(self,value0):3 self.datavalue #初始化数据4 def __add__(self,other):5 self.dataother6>>> xadder()7>>…

oracle清理asm归档日志,【Oracle】 rman 删除归档日志的命令

因为数据仓库上asm的磁盘空间不足&#xff0c;需要删除早期的归档日志&#xff0c;查看资料有以下两种方式&#xff1a;delete archivelog until time sysdate-N;delete archivelog all completed before sysdate-N;这两个命令的差别在哪里呢&#xff1f;使用list 命令来查看一…

求逆矩阵计算器_991CN的矩阵运算

昨天的推文中说了一道二端口的题目&#xff0c;虚线中的大二端口由两个小二端口级联而成&#xff0c;在计算过程中&#xff0c;我们需要使用到矩阵的运算&#xff0c;昨天讲题的时候说会说一下用计算器进行矩阵运算&#xff0c;今天我们就来说一下。其实在算电路的时候&#xf…

去快捷方式小箭头_电脑桌面如何快速去掉快捷方式小箭头

我们使用电脑时会发现在电脑桌面图标上经常有一个小箭头&#xff0c;这是什么原因呢&#xff1f;原来&#xff0c;这个小箭头只存在于快捷方式的软件图标上&#xff0c;就是说通过快捷方式创建的图标就有这个小箭头。那么如何去掉这些小箭头呢&#xff01;不知道也没关系&#…

Oracle里silent,静默方式(silent)安装Oracle软件

有的时候不方便登陆Linux/Unix的图形界面安装数据库&#xff0c;且GUI方式安装让我们无法知道具体是做了什么操作&#xff0c;我们完全可以采用命令模式安装和删除Oracle软件(代替OUI)、建立和删除数据库库(代替dbca)。平台&#xff1a;RHEL4.5&#xff0c;Oracle10.2.0.11、上…

oracle 移动日志文件,Oracle数据库移动数据文件、日志文件和控制文件

1、关闭数据库SQL> shutdown immediate;2、移动数据文件和日志文件到新位置SQL> host mv /u01/olddata.dbf /u02/newdata.dbf;SQL> host mv /u01/oldredo.log /u02/newredo.log;3、以加载模式启动数据库SQL> startup mount;4、在数据库中更改数据文件和日志文件路径…

python3导入_Python3导入相对还是绝对的正确方法?

我正在编写一个python模块。在Python2中一切正常&#xff0c;但在Python3中&#xff0c;导入失败。这是我的代码结构。neuralnet/__init__.pytrain.py # A wrapper to train (does not define new things)neuralnet.py # Defines the workhorse class neuralnetlayers/__init__…

oracle pdb是什么意思,浅谈Oracle数据库12c PDB技术

PDB大致功能描述&#xff1a;创建&#xff1a;用create pluggable database的命令&#xff0c;用file_name_convert的方式拷贝seed pdb的文件到对应的新pdb的路径下。拷贝的是最基本system和sysaux表空间&#xff0c;将新建的pdb从mount的状态打开到read write的状态。建立pdb用…

oracle查询sql时间ain,Oracle SQL 时间查询

一、在使用Oracle的to_date函数来做日期转换时&#xff0c;很多Java程序员也许会和我一样&#xff0c;直觉的采用ldquo;yyyy-MM-dd HH:mm:ssrdquo;的to_date()与24小时制表示法及mm分钟的显示&#xff1a;一、在使用Oracle的to_date函数来做日期转换时&#xff0c;很多Java程序…

室内定位算法_001:室内定位算法技术咨询服务工作室简介(更新)

点击蓝字关注我们团队成员&#xff1a;何博士(中国科学院大学&#xff0c;博士) 杨博士(加拿大多伦多大学&#xff0c;博士后)微信联系号&#xff1a;UWB_cwhe服务模式&#xff1a;1. 为企业提供定位算法技术支持与指导&#xff0c;以提高企业室内定位系统产品的稳定…

双系统还是虚拟机 linux系统时间,你会选择Mac虚拟机还是双系统

在Mac上运行双系统&#xff0c;你是会选择Mac虚拟机呢还是直接双系统&#xff1f;今天我们就这个问题来讨论一下这两之前的区别&#xff0c;究竟是选择Mac最好用的虚拟机 parallels desktop还是Boot Camp&#xff1f;1、安装在pd虚拟机中&#xff0c;安装系统和安装驱动完全自动…

oracle中修改多个字段默认值_利用VBA代码在已有的数据表中删除、添加、修改字段...

大家好,今日继续给大家讲解VBA数据库解决方案的第21讲,如何利用VBA代码在已有的数据表中删除&#xff0c;添加&#xff0c;修改字段。这个内容是操作数据库的一项必修的内容&#xff0c;还望大家在实际工作中多利用&#xff0c;所以这节的知识&#xff0c;对于读者提高自己的数…

cs1.5 linux服务端,CS1.5在linux上的配置

CS1.5在linux上的配置作者&#xff1a;作者第一步下载所需要的软件&#xff1a;hlds_l_3110_full.tar.gzhlds_l_3110b_beta.tar.gzcs_15_full.tar.gzmetamod-1.13.tgzcm_cstrike_1_80_19-en_beta.zipsm_cstrike-2.6.15.zip第二步 解压 hlds_l_3110_full.tar.gzhlds_l_3110b_bet…

java跟python优势_当前Java与Python相比还有哪些优势

首先&#xff0c;Java语言与Python语言都是非常流行的全场景编程语言&#xff0c;在很多开发场景下&#xff0c;既可以使用Java语言&#xff0c;也可以采用Python语言&#xff0c;比如Web开发、大数据开发等等。随着近几年大数据和人工智能领域的热度越来越高&#xff0c;Pytho…

linux添加删除回环地址,CentOS7如何添加本地回环地址?CentOS7添加本地回环地址的方法...

1、临时添加ip addr add 10.10.1.1/32 dev lo:1重启失效2、永久添加cd /etc/sysconfig/network-scriptscp ifcfg-lo ifcfg-lo:1[rootlocalhost network-scripts]# cat ifcfg-lo:1DEVICElo:1IPADDR10.10.1.1NETMASK255.255.255.255ONBOOTyesNAMEloopback1[rootlocalhost network…