1. 程式人生 > >python3 爬蟲爬取深圳公租房輪候庫(深圳房網)

python3 爬蟲爬取深圳公租房輪候庫(深圳房網)

深圳公租房輪候庫已經朝著幾十萬人的規模前進了,這是截至16年10月之前的資料了,貼上來大家體會下

所以17年已更新妥妥的10W+

今天就拿這個作為爬蟲的練手專案

 1、環境準備:

作業系統:win10

python版本:python3.5.3

開發工具:sublime 3

python需要安裝的庫:

  anaconda  沒安裝的可以去https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/這裡下載,國內映象比較快;

  Requests    urllib的升級版本打包了全部功能並簡化了使用方法(點我檢視官方文件

  beautifulsoup   是一個可以從HTML或XML檔案中提取資料的Python庫.它能夠通過你喜歡的轉換器實現慣用的文件導航,查詢,修改文件的方式.(

點我檢視官方文件

  LXML    一個HTML解析包 用於輔助beautifulsoup解析網頁

Requests ,beautifulsoup ,LXML  模組安裝方式:windows的命令提示符視窗輸入以下程式碼即可

pip install requests
pip install beautifulsoup4
pip install lxml

直接貼程式碼吧

import requests
from bs4 import BeautifulSoup
import os

class Gongzufang():
    #獲取頁面資料
    def all_url(self,url):
        html 
= self.request(url) all_a = BeautifulSoup(html.text, 'lxml').find('table', class_='sort-tab').find_all('tr') for a in all_a: title = a.get_text("|", strip=True) print(title) #self.save_data(url) #獲取分頁面地址 def html(self, url): html = self.request(url) max_span
= BeautifulSoup(html.text, 'lxml').find('div', class_='fix pagebox').find_all('a')[-3].get_text() for page in range(1, int(max_span) + 1): page_url = url + '/' + '0-'+str(page)+'-0-0-1' self.all_url(page_url) def save_data(self,data_url):#下載資料 pass #獲取網頁的response 然後返回 def request(self, url): headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240','Connection': 'Keep-Alive','Referer':'http://www.mzitu.com/tag/baoru/'} content = requests.get(url, headers=headers) return content #例項化 Gongzufang = Gongzufang() #給函式all_url、html傳入引數 你可以當作啟動爬蟲(就是入口) Gongzufang.html('http://anju.szhome.com/gzfpm') Gongzufang.all_url('http://anju.szhome.com/gzfpm')

 結果如下:

後續:

結果爬到6w+的時候出現了個偏僻字:。。

襯衫哥決定不填這個坑,反正只是想爬身份證的資訊。。

修改後的程式碼如下:

# -*- coding:utf-8 -*- 
import requests
from bs4 import BeautifulSoup
#import os
import re
#import sys
#import io

#sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')

class Gongzufang():

    #獲取頁面資料
    def all_url(self,url):
        html = self.request(url)
        all_a = BeautifulSoup(html.text, 'lxml').find('table', class_='sort-tab').find_all('tr')
        #all_a = BeautifulSoup(html.text, 'lxml').find('table', class_='sort-tab').find_all('td')[0:9]
        
        for a in all_a:
            for find_td in a.find_all('td')[4:5]:
                text_td = find_td.get_text("\r", strip=True)
                print(text_td)
                with open('d:/test.txt', 'a') as f:
                    print(text_td,file=f)
            #print(title)
            
    #獲取分頁面地址
    
    def html(self, url):
        html = self.request(url)
        max_span = BeautifulSoup(html.text, 'lxml').find('div', class_='fix pagebox').find_all('a')[-3].get_text()
        for page in range(1, int(max_span) + 1):
            page_url = url + '/' + '0-'+str(page)+'-0-0-1'
            
            self.all_url(page_url)

    def save_data(self,data_url):#下載資料
        pass
        #獲取網頁的response 然後返回
    def request(self, url): 
        headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240','Connection': 'Keep-Alive','Referer':'http://www.mzitu.com/tag/baoru/'}
        content = requests.get(url, headers=headers)
        return content
#例項化
Gongzufang = Gongzufang() 
#給函式all_url、html傳入引數  你可以當作啟動爬蟲(就是入口)
Gongzufang.html('http://anju.szhome.com/gzfpm')
Gongzufang.all_url('http://anju.szhome.com/gzfpm') 

  現在又可以開始快樂的爬取資料了