1.網路爬蟲的架構 :
2.url管理器的簡單實現 :
(1)存放待爬取url的 set 集合.
(2)存放未爬取url的 set 集合.
(3)url管理器應該具有的方法 : 新增新的url, 判斷新增的url是否存在, 判斷是否存在待爬取的url, 獲取待爬取的url, 移動爬取完成的url由未爬取 set 集合至 已爬取 set 集合.
(1) 通過url簡單實現.
#直接通過url獲取要爬取的頁面資訊
response = urllib2.uelopen(url)
#獲取爬取的返回狀態碼
statuscode = response.getcode()
#獲取html內容
response.read()
(2) 對request資料的封裝, 此時可以新增請求頭, 設定**, 和請求資料
import urllib2
#獲取request
request = urllib2.request("")
#設定請求頭
request.add_header("user-agent", 'mozilla/5.0')
#獲取響應資訊
response = urllib2.urlopen(request)
#獲取狀態碼
code = response.getcode()
#獲取資訊
info = response.read()
(3)新增一些特殊的處理 : eg, 新增cooker, httpcookieprocessor 用來處理cookie, proxyhandler用來處理**, httpshandler用來處理 https的請求, httpredirecthandler 用來處理跳轉關係.
#獲取cookie的容器
cookie = cookielib.cookiejar()
#獲取cookie處理的模組
#新增cookie處理模組
urllib2.install_opener(opener)
#訪問url
response = urllib2.urlopen("")
print response.getcode()
#列印cookie的內容
print cookie
print response.read()
3.網頁解析器 :
(1)dom樹結構
4 beautifulsoup4的使用 : 主要使用 bs4 進行網頁的解析操作.
(1)find搜尋出的是符合條件的第乙個元素.
(2)建立beatuifulsoup4的物件 :
from bs4 import beautifulsoup
soup = beautifulsoup(
html_doc, #html 字串
'html_parser', #html解析器
from_encoding='utf8' #編碼格式
)
(3)進行節點搜尋 : class屬性在soup中使用class_表示html的 class屬性, 因為class是python的關鍵字. 下圖中的re表示正則校驗.
(4)訪問節點資訊 : 按照字典的形式訪問節點中屬性的資訊.
(5)還可以使用soup物件進行屬性過濾選擇 : 使用soup.select
soup.select("p > #link1")
5. 對於python的set集合 :
(1)set集合是不重複無序的, 無序指的是存放順序和輸出順序不同.
(2)set.pop方法, 如果集合中方的是list和元祖時, 刪除的是最左邊的元素, 當存放的是字典和字元的集合的時候是隨機刪除的.
6.python中的靜態方法是寫在class外面, 並且不新增self修飾的方法.
7.python 中 'aaa{}'.format('bbb')會輸出aaabbb
8. re.search(regex, str) 匹配字串中是否包含正規表示式匹配的值.
python網路爬蟲(二)
在第一篇中,我們介紹了如何進行發起乙個http請求,並接受響應。在這一部分中,我們介紹一下如何解析網頁並提取我們需要的資料。我們採用requests這個庫進行乙個網頁請求。r requests.get headers,kwargs 通過這一句 我們即可獲得伺服器傳給我們的響應內容 不考慮連線錯誤等情...
Python網路爬蟲學習(二)
十五.京東商品頁面的爬取 import requests r requests.get r.status code r.encoding r.text 1000 十六.亞馬遜商品頁面的爬取 import requests def main url try kv r requests.get url,...
python網路爬蟲入門(二)
一 python爬取10頁250條資料中的所有 書單 模組案例方法一 encoding utf 8 import requests from bs4 import beautifulsoup i 25 while i 225 i i 25 c str i resp requests.get c so...