python爬蟲(1)——urllib包

  人生苦短,我用python!html

1、關於爬蟲python

  鑑於個人windos環境使用命令行感受很是不便,也懶得折騰虛擬機,因而我選擇了一個折中的辦法——Cmder。它的下載地址是:cmder.netlinux

Cmder是一個加強型命令行工具,不只可使用windows下的全部命令,更爽的是可使用linux的命令,shell命令。下載下來後,解壓便可使用。稍加設置(具體的設置能夠百度),你就會發現它比windos的cmd要好用的多。shell

  爬蟲分爲通用爬蟲和聚焦爬蟲,咱們所研究的就是聚焦爬蟲——抓取網頁時篩選,儘可能只抓與需求相關的網頁信息。而網絡爬蟲的抓取過程咱們能夠理解爲模擬瀏覽器操做的過程,這個過程基於Http(超文本傳輸協議)和Https(安全版的Http)的。當咱們向瀏覽器中輸入https://www.baidu.com/時,它就會根據這個地址來獲取網頁信息。咱們所輸入的網址就是URL——統一資源定位符,它是用於完整地描述Internet上網頁和其它資源的地址的一種標識方式。windows

 

2、Python的urllib包瀏覽器

  在Python3中,咱們可使用urlib這個組件抓取網頁,urllib是一個URL處理包,這個包中集合了一些處理URL的模塊。咱們可使用help命令查看一下。安全

import urllib

help(urllib)

其中:網絡

  1.urllib.request模塊是用來打開和讀取URLs的;工具

  2.urllib.error模塊包含一些有urllib.request產生的錯誤,可使用try進行捕捉處理(能夠學習一下python的異常處理機制);學習

  3.urllib.parse模塊包含了一些解析URLs的方法;

  4.urllib.robotparser模塊用來解析robots.txt(爬蟲協議)文本文件,它提供了一個單獨的RobotFileParser類,經過該類提供的can_fetch()方法測試爬蟲是否能夠下載一個頁面。

 

 

3、下載一個頁面

 

  瞭解了以上這些,咱們能夠用request來嘗試下載一個頁面。在ipython中測試一下:

 

1 from urllib import request
2 
3 response=request.urlopen('http://www.17jita.com/')
4 html=response.read()
5 
6 print(html)

  看起來有些亂碼,彆着急,咱們能夠經過簡單的decode()命令將網頁的信息進行解碼,並顯示出來.

1 from urllib import request
2 
3 response=request.urlopen('http://www.17jita.com/')
4 html=response.read().decode('gbk')
5 
6 print(html)

 

  這樣咱們就能夠利用python看到網頁的源碼了,這與在瀏覽器右鍵查看網頁源代碼所看到的是一致的。

 

  值得注意的是,在使用decode解碼時,咱們要了解到一些一些經常使用的編碼方式,如:gbk,gb2312,utf-8,Unicode等等。python2的編碼就經常爲人所詬病,可是在在python3中,這個問題獲得瞭解決。具體資料能夠自行百度。

相關文章
相關標籤/搜索