近期網(wǎng)上掀起爬蟲熱潮劫恒,題主配置的python包為3.6.1短荐,對深網(wǎng)網(wǎng)頁進行數(shù)據(jù)爬取混巧,從本書中學(xué)習(xí)經(jīng)歷記載在此.
Python網(wǎng)絡(luò)數(shù)據(jù)收集
深網(wǎng),為深層網(wǎng)絡(luò)(英語:Deep Web)的略稱裙品,又稱:不可見網(wǎng)、隱藏網(wǎng)俗或,是指互聯(lián)網(wǎng)上那些不能被標準搜索引擎索引的非表面網(wǎng)絡(luò)內(nèi)容
<h1><strong>深網(wǎng)資源</strong></h1>[編輯]
動態(tài)內(nèi)容
未被鏈接內(nèi)容
私有網(wǎng)站
Contextual Web
被限制訪問內(nèi)容
腳本化內(nèi)容
非HTML/文本內(nèi)容
深網(wǎng)爬取數(shù)據(jù)分為以下兩步
1.生成網(wǎng)站地圖
2.收集數(shù)據(jù)
生成網(wǎng)站地圖思路
為了避免一個頁面被采集兩次市怎,考慮鏈接去重,不限制爬蟲的采集范圍辛慰,只要遇到頁面就查找所有以/wiki/開頭的鏈接区匠,不考慮鏈接的開頭是否冒號
from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
pages = set()
def getlinks(pageUrl):
global pages
html=urlopen("http://en.wikipedia.org"+pageUrl)
bsObj=BeautifulSoup(html,'html.parser')
for link in bsObj.findAll("a" , href=re.compile("^(/wiki/)")):
if 'href' in link.attrs:
if link.attrs['href'] not in pages:
newPage=link.attrs['href']
print(newPage)
pages.add(newPage)
getlinks(newPage)
getlinks("")
一開始,用getLinks處理一個空的url,是維基百科的主頁驰弄,然后遍歷首頁上的每個鏈接麻汰,并檢查是否已經(jīng)在全局變量集合pages里面了(已經(jīng)采集的所有集合)如果不在,就打印到屏幕上戚篙,并把鏈接加入pages集合五鲫,再用getLinks遞歸處理這個鏈接
爬取所有符合^/wiki/鏈接的正則表達式