乙個簡單爬蟲的架構圖如下所示:
簡單爬蟲架構的動態執行流程如下圖所示:
url管理器:管理待爬取的url集合和以爬取的url集合。作用是防止重複爬取和迴圈爬取。
乙個url管理器應該具有以下幾個功能:
關聯式資料庫:
快取資料庫:
方法1:最簡潔的方法
#coding:utf-8
import urllib2
#直接請求
response = urllib2.urlopen('')
#獲取狀態碼,如果是200表示獲取成功
print response.getcode()
#讀取內容
cont = response.read()
print len(cont)
方法2:新增data、http header
#coding:utf-8
import urllib2
#建立request物件
request = urllib2.request('')
#新增http的header,偽裝成瀏覽器訪問
request.add_header('user-agent', 'mozilla/5.0')
#傳送請求,獲取結果
response = urllib2.urlopen(request)
#讀取內容
cont = response.read()
print len(cont)
方法3:新增特殊情景的處理器
#coding:utf-8
import urllib2
import cookielib
#可以進行cookie處理
#直接請求
response = urllib2.urlopen('')
#讀取內容
cont = response.read()
print len(cont)
#列印cookie
print cj
網頁解析器:從網頁中提取出有價值資料的工具。
python有以下幾種網頁解析器:正規表示式、html.parser、beautifulsoup、lxml。
文件樹(document tree)是html頁面的層級結構。它由元素、屬性和文字組成,它們都是乙個節點(node)。
lang="en-us">
charset="utf-8">
html dom樹型結構圖title>
head>
parap>
ghib>
div>
body>
html>根據上面的html文件可以繪製乙個清晰的dom結構樹:
#根據html網頁字串建立beautifulsoup物件
soup = beautifulsoup(
html_doc, #html網頁字串
'html.parser', #html解析器
from_encoding='utf-8'
#html文件的編碼)
#搜尋節點方法:find_all(name, attrs, string)
#查詢所有標籤為a的節點
soup.find('a')
#查詢所有標籤為a,鏈結符合/view/123.htm形式的節點
#可以傳入正規表示式作為引數
#查詢所有標籤為div,class為abc,文字內容為python的節點
soup.find('div', class_='abc', string='python')
#獲取查詢到節點的標籤名稱
node.name
#獲取查詢到的a節點的href屬性
node['href']
#獲取查詢到的a節點的鏈結文字
node.get_text()
python爬蟲簡單 python爬蟲 簡單版
學過python的帥哥都知道,爬蟲是python的非常好玩的東西,而且python自帶urllib urllib2 requests等的庫,為爬蟲的開發提供大大的方便。這次我要用urllib2,爬一堆風景。先上重點 1 response urllib2.urlopen url read 2 soup...
Python開發簡單爬蟲之爬蟲介紹(一)
本部落格來自慕課網 python開發簡單爬蟲 爬蟲主要場景 不需要登入的靜態網頁 使用ajax非同步載入的內容 需要使用者登入才可以訪問的網頁 以下主要介紹不需要登入的靜態網頁。3中實現方式 python中已經存在關鍵字class,故當屬性為class時,用class 代替。coding utf 8...
Python開發簡單爬蟲 學習筆記
1.爬蟲簡介 爬蟲是能夠自動抓取網際網路資訊的程式 2.簡單爬蟲架構 3.url管理器 url管理器 管理待抓取url集合和已抓取url集合 防止重複抓取 防止迴圈抓取 urllib2 python官方基礎模組 requests 第三方包更強大,後期推薦使用 import urllib2 直接請求 ...