Python 3 爬蟲的自我探索(一)

0 體驗一:用python抓取整個網頁

Step 1 : 實現python抓取網頁的代碼,並運行

# encoding: UTF-8
import urllib.request

url = "http://www.baidu.com"
data = urllib.request.urlopen(url)
show = data.read().decode('UTF-8')
print(show)

Step 2 :探索當中的變量和方法,在上面的代碼後加入以下代碼

print("_______探索其中的data變量_______")
print(type(data))
print("_____探索其中data變量的方法_____")
print('_________________________________')
print(data.geturl())
print('_________________________________')
print(data.info())
print('_________________________________')
print(data.getcode())
print('_________________________________')

0 體驗二:用python簡單處理URL

Step 1 : 實現抓取百度上搜索關鍵詞爲python的網頁,並運行

import urllib
import urllib.request

data = { }
data['word'] = 'python'

url_values = urllib.parse.urlencode(data)
url = "http://www.baidu.com/s?"
full_url = url + url_values

show = urllib.request.urlopen(full_url).read()
show = show.decode('UTF-8')
print(show)
  • data是一個字典,通過urlencode()方法將其轉化爲URL格式的字符串,此處獲得了”word=python”字符串

1. Python的隊列

由於list的效率問題,python官方推薦使用colleation.deque來高效的完成隊列任務.

// python官方文檔

from collections import deque
queue = deque(["Eric", "John", "Michael"])
queue.append("Terry")           # Terry 入隊
queue.append("Graham")          # Graham 入隊
queue.popleft()                 # 隊首元素出隊
#輸出: 'Eric'
queue.popleft()                 # 隊首元素出隊
#輸出: 'John'
queue                           # 隊列中剩下的元素
#輸出: deque(['Michael', 'Terry', 'Graham'])

2. Python的集合

爲了不重複爬取已經爬過的網站,我們需要把爬過頁面URL放入到集合,在爬下一個URL之前判斷是否已經存在這個URL,然後再進行爬取

數據結構set
- 一種無序的, 不包含重複元素的結構
- (一般用來測試是否已經包含了某元素, 或者用來對衆多元素們去重)
- 與數學中的集合論同樣, 他支持的運算有交, 並, 差, 對稱差

// python官方文檔

>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket)                      # 這裏演示的是去重功能
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket                 # 快速判斷元素是否在集合內
True
>>> 'crabgrass' in basket
False

>>> # 下面展示兩個集合間的運算.
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a                                  
{'a', 'r', 'b', 'c', 'd'}
>>> a - b                              # 集合a中包含元素
{'r', 'd', 'b'}
>>> a | b                              # 集合a或b中包含的所有元素
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b                              # 集合a和b中都包含了的元素
{'a', 'c'}
>>> a ^ b                              # 不同時包含於a和b的元素
{'r', 'd', 'b', 'm', 'z', 'l'}

3. Python的正則表達式

w3cschool 的Python正則表達式部分

發佈了34 篇原創文章 · 獲贊 5 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章