Python學習(筆記3-網絡爬蟲)

數據爬蟲相關代碼例子已上傳****

1.NumPy (Numeric Python) :用Python實現的科學計算庫

  • 強大的N維數組對象array
  • 成熟的科學函數庫
  • 實用的線性代數、隨機數生成函數等
  • NumPy的操作對象是多維數組ndarray       ndarray.shape數組的維度
  • 創建數組: np.array(<list>) , np.arrange()
  • 改變數組形狀reshape()

2.JSON格式
JSON(JavaScript Object Notation)是一種輕量級數據交換格式,可以對複雜數據進行表達和存儲 ,易於閱讀和理解
規則:

  • 數據保存在鍵值對中
  • 鍵值對之間由逗號分隔
  • 花括號用於保存鍵值對數據組成的對象
  • 方括號用於保存鍵值對數據組成的數組

採用對象、數組方式組織起來的鍵值對可以表示任何結構的數據,JSON格式是互聯網上主要使用的複雜數據格式之一

[
    {
        "aqi":47,
        "area":"北京" ,
        "position_name":"萬壽西宮",
        "time_point": "2017-07-29" 
    },
    {
        "aqi":63,
        "area":"北京”,
        "position_name" :"定陵”,
        "time_ point":"2017-07-29"
    }
]

3.JSON庫

  • JSON庫是處理JSON格式的Python標準庫
  • 兩個過程:

       編碼(encoding) ,將Python數據類型轉換成JSON格式的過程
       解碼(decoding) ,從JSON格式中解析數據對應到Python數據類型的過程

4.CSV格式
CSV(Comma- Separated Values)是一種通用的、相對簡單的文件格式,在商業和科學領域上廣泛使用
規則:

  • 以行爲單位
  • 每行表示一條記錄
  • 以英文逗號分割每列數據(如果數據爲空 ,逗號也要保留)
  • 列名通常放置在文件第一 行
aqi,area,pm2_5,pm2_ 5_ 24h,position_name,primary_pollutant,quality,station_code,time_point
47,北京,32,33,萬壽西宮,優,1001A,2017-07-29T14:00:00Z
63,北京,37,20,定陵,顆粒物(PM10),良,1002A,2017-07-29T14:00:00Z
  • import CSV
  • csv.writerow(list) #將列表中的元素寫入文件的一行中

5.os模塊:提供了與系統、目錄操作相關的功能,不受平臺的限制

6.網絡爬蟲:自動抓取互聯網信息的程序 ;利用互聯網數據進行分析、 開發產品

步驟:

  • 通過網絡鏈接獲取網頁內容
  • 對獲得的網頁內容進行處理

url是統一資源定位符,對可以從互聯網上得到的資源的位置和訪問方法的一種簡潔的表示,是互聯網上標準資源的地址。

7.requests模塊

  • requests模塊是一一個簡潔且簡單的處理HTTP請求的工具
  • 支持非常豐富的鏈接訪問功能,包括URL獲取、 HTTP會話、Cookie記錄等

requests網頁請求


requests對象屬性

8.網頁解析:結構化解析 ; DOM (Document Object Model) ,樹形結構

9.BeautifulSoup解析網頁
BeautifulSoup:用於解析HTML或XML;pip install beautifulsoup4;import bs4

步驟:

  • 創建BeautifulSoup對象
  • 查詢節點:find ,找到第一一個滿足條件的節點;find_ all, 找到所有滿足條件的節點

創建對象

  • 創建BeautifulSoup對象
bs= BeautifulSoup(
    url, 
    html_ parser, #指定解析器
    enoding  #指定編碼格式(確保和網頁編碼格式一致)
)

 查找節點

  •  <a href='a.html' class='a_ link'>next page</a>
  • 可按節點類型、屬性或內容訪問
  • 按類型查找節點bs.find_ all('a')
  • 按屬性查找節點
bs.find all(“a', href='a.html')
bs.find all('a', href=* a.html', string‘next page')
bs.find_ all("a', class_ =‘a_ link') #注意:是class_
#或者bs.find all('a', {'class':'a_ link'})

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章