房價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.pswp.cn/news/533540.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533540.shtml
英文地址,請注明出處:http://en.pswp.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…