以下環境基於py2.7
爬蟲架構:
url管理器:處理待爬url以及爬過的url,防止重複抓取以及死迴圈
網頁解析器:解析出想要的資料,以及捕捉新的url位址交給url管理器進行處理繼續抓取。過濾資料,拿到有價值的資料進行處理。
資料的存放:
python 的 set集合 可以防止資料的重複
需要長期儲存的話存放到關係型資料庫
需要效能存放到快取資料庫
urllib2.urlopen(url)
最簡單:
import urllib2
response = urllib2.urlopen(url) # 開啟url
response.getcode() # 獲得狀態碼
帶上引數:
request = urllib2.request(url)
request.add_data('name','value') #資料
request.add_header('user-agent','...')#模擬瀏覽器頭部訪問
response.urllib2.urlopen(url)
帶上cookie、**、https、重定向等:
cj = cookielib.cookiejar() #建立cj容器
urllib2.install_opener(opener) # 安裝opener容器
response = urllib2.urlopen(url) 帶著cookie訪問url
解析器:regex、html.parser、beautifulsoup、lxml
一般使用bs4 beautiful soup 4
1、建立bs物件
soup = beautifulsoup(
html_doc,#文件字串
'html.parser', # html解析器
from_encoding='utf-8' #html文件編碼
)
2、搜尋節點
sou.find_all(標籤名,屬性,字串)#可以使用正則直接搜尋
exp:
# coding:utf8
from bs4 import beautifulsoup
import re
html_doc = """
the dormouse's story
once upon a time there were three little sisters; and their names were
elsie,
lacie and
tillie;
and they lived at the bottom of a well.
..."""
soup = beautifulsoup(html_doc,'html.parser',from_encoding='utf-8')
links = soup.find_all('a')
# for link in links:
# print link.name,link['href'],link.get_text()
# print 'only lacie'
# link = soup.find('a',href='')
# print link
# print 'regex start....'
# reg = soup.find('a',href=re.compile(r'ill'))
# print reg.get_text()
# print 'p'
# p_node = soup.find('p',class_=re.compile(r"s"))
# print p_node.get_text()
每個語句執行結果自行測試喲
以上內容摘自慕課網講師ppt
乙隻垂直的小爬蟲
這只垂直的小爬蟲,使用如下實現 實現的思路很簡單,我從主函式開始簡單敘述一下整個執行流程,第一步 收集需要爬取的url位址,容器我選擇的是concurrentlinkedqueue非阻塞佇列,它底層使用unsafe實現,要的就是它執行緒安全的特性 主函式 如下 static string url 新...
乙隻R語言de爬蟲
該爬蟲爬取得是某地新聞內容 pa1 用於找到href鏈結 pa2 用於根據鏈結找到新聞內容 pa3 用於儲存進資料庫 嘿嘿 爬蟲pa1 library xml 引入xml包 givehref function rootnode givenames function rootnode getpage ...
乙隻爬蟲帶你看世界 4
7.模擬瀏覽器訪問,隱藏python自身資訊 原理 當瀏覽器訪問伺服器上的內容時,伺服器會抓取訪問資訊中header中的user agent資訊,若user agent中顯示有python資訊等,則視為爬蟲程式,此時伺服器會阻止它進行資訊爬取。為了隱藏爬蟲程式,此時使用模擬瀏覽器訪問的方式來進行資訊...