乙個通用的網路爬蟲的框架如圖所示:
網路爬蟲的基本工作流程如下:
對應的,可以將網際網路的所有頁面分為五個部分:
可知網頁:還沒有抓取下來,也沒有在待抓取url佇列中,但是可以通過對已抓取頁面或者待抓取url對應頁面進行分析獲取到的url,認為是可知網頁。
在爬蟲系統中,待抓取url佇列是很重要的一部分。待抓取url佇列中的url以什麼樣的順序排列也是乙個很重要的問題,因為這涉及到先抓取那個頁面,後抓取哪個頁面。而決定這些url排列順序的方法,叫做抓取策略。下面重點介紹幾種常見的抓取策略:
1.深度優先遍歷策略
遍歷的路徑:a-f-g e-h-i b c d
2.寬度優先遍歷策略
遍歷路徑:a-b-c-d-e-f g h i
3.反向鏈結數策略
反向鏈結數是指乙個網頁被其他網頁鏈結指向的數量。反向鏈結數表示的是乙個網頁的內容受到其他人的推薦的程度。因此,很多時候搜尋引擎的抓取系統會使用這個指標來評價網頁的重要程度,從而決定不同網頁的抓取先後順序。
在真實的網路環境中,由於廣告鏈結、作弊鏈結的存在,反向鏈結數不能完全等他我那個也的重要程度。因此,搜尋引擎往往考慮一些可靠的反向鏈結數。
爬取58同城上的房子簡介,房子型別,房子**等資訊,然後寫入到rent.csv
檔案中,形成**.
形成的#!/usr/bin/python
#coding=utf-8
from bs4 import beautifulsoup
from urlparse import urljoin
import requests
import csv
# 選取**在1500-2000之間的房子資訊
url = ''
page = 0
csv_file = open('rent.csv','wb')
csv_writer = csv.writer(csv_file,delimiter = ',')
while true:
page += 1
print "fetch: ",url.format(page = page)
response = requests.get(url.format(page = page))
html = beautifulsoup(response.text)
house_list = html.select('.list > li')
ifnot house_list:
break
for house in house_list:
house_title = house.select("h2")[0].string.encode("utf-8")
house_url = urljoin(url,house.select("a")[0]["href"])
house_info_list = house_title.split()
if"公寓"
in house_info_list[1] or
"青年公寓"
in house_info_list[1]:
house_location = house_info_list[0]
else:
house_location = house_info_list[1]
house_money = house.select(".money")[0].select("b")[0].string.encode("utf-8")
csv_writer.writerow([house_title,house_location,house_money,house_url])
csv_file.close()
rent.csv
**的效果圖如下:
網路蜘蛛爬蟲原理
相對於通用網路爬蟲,聚焦爬蟲還需要解決三個主要問題 1 對抓取目標的描述或定義 2 對網頁或資料的分析與過濾 3 對url的搜尋策略。抓取目標的描述和定義是決定網頁分析演算法與url搜尋策略如何制訂的基礎。而網頁分析演算法和候選url排序演算法是決定搜尋引擎所提供的服務形式和爬蟲網頁抓取行為的關鍵所...
網路爬蟲工作原理
1 聚焦爬蟲工作原理及關鍵技術概述 相對於通用網路爬蟲,聚焦爬蟲還需要解決三個主要問題 1 對抓取目標的描述或定義 2 對網頁或資料的分析與過濾 3 對url的搜尋策略。抓取目標的描述和定義是決定網頁分析演算法與url搜尋策略如何制訂的基礎。而網頁分析演算法和候選url排序演算法是決定搜尋引擎所提供...
爬蟲的原理
1 什麼是爬蟲?網路爬蟲 又被稱為網頁蜘蛛,網路機械人 就是模擬瀏覽器傳送網路請求,接收請求響應,一種按照一定的規則,自動地抓取網際網路資訊的程式 原則上,只要是瀏覽器 客戶端 能做的事情,爬蟲都能夠做 2 爬蟲的本質 模擬瀏覽器開啟網頁,獲取網頁中想要的那部分資料 瀏覽器開啟網頁的過程如下 請求的...