A. Python爬蟲是什麼
為自動提取網頁的程序,它為搜索引擎從萬維網上下載網頁。
網路爬蟲為一個自動提取網頁的程序,它為搜索引擎從萬維網上下載網頁,是搜索引擎的重要組成。傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定停止條件。
將根據一定的搜索策略從隊列中選擇下一步要抓取的網頁URL,並重復上述過程,直到達到系統的某一條件時停止。另外,所有被爬蟲抓取的網頁將會被系統存貯,進行一定的分析、過濾,並建立索引,以便之後的查詢和檢索。
(1)python過濾web信息擴展閱讀:
網路爬蟲的相關要求規定:
1、由Python標准庫提供了系統管理、網路通信、文本處理、資料庫介面、圖形系統、XML處理等額外的功能。
2、按照網頁內容目錄層次深淺來爬行頁面,處於較淺目錄層次的頁面首先被爬行。 當同一層次中的頁面爬行完畢後,爬蟲再深入下一層繼續爬行。
3、文本處理,包含文本格式化、正則表達式匹配、文本差異計算與合並、Unicode支持,二進制數據處理等功能。
B. 濡備綍鐢 Python 瀹炵幇 Web 鎶撳彇
#!/usr/bin/envpython
#-*-coding:utf-8-*-
#bycarlin.wang
#璇峰弬鑰
importurllib
importurllib2
importtime
importos
importrandom
frombs4importBeautifulSoup
defget_Html(url):
headers={"User-Agent":"Mozilla/5.0(WindowsNT6.1;WOW64;rv:41.0)Gecko/20100101Firefox/41.0"}
req=urllib2.Request(url,headers=headers)
res=urllib2.urlopen(req)
res_html=res.read().decode('UTF-8')
returnres_html
defurlPages(page):
url="http://jandan.net/ooxx/page-"+str(page)+'#comments'
returnurl
deffind_img_url(html):
soup=BeautifulSoup(html,'html.parser',from_encoding='utf-8')
img_urls=soup.find_all(class_='view_img_link')
returnimg_urlsdefdownload_img(url):
fdir="D:/data/jiandan"
ifnotos.path.exists(fdir):
os.makedirs(fdir)
try:
#(p2)=os.path.split(url)
#(p2,f2)=os.path.split(url)
f2=''.join(map(lambdaxx:(hex(ord(xx))[2:]),os.urandom(16)))#闅忔満瀛楃︿覆浣滀負鏂囦歡鍚嶅瓧錛岄槻姝㈠悕瀛楅噸澶
#ifos.path.exists(fdir+"/"+f2):
#print"fdirisexists"
ifurl:
imgtype=url.split('/')[4].split('.')[1]
filename,msg=urllib.urlretrieve(url,fdir+"/"+f2+'.'+imgtype)
ifos.path.getsize(filename)<100:
os.remove(filename)
exceptException,e:
return"downimageerror!"
defrun():
forpageinrange(2001,2007):
html=get_Html(urlPages(page))
urls=find_img_url(html)
forurlinurls:
s=url.get('href')
prints
download_img(s)
if__name__=='__main__':
run()
C. python鐖鉶鏃訛紝bs4鏃犳硶璇誨彇緗戦〉鏍囩句腑鐨勬枃鏈
紼嶅井璇翠竴涓嬭儗鏅錛屽綋鏃舵垜鎯崇爺絀惰泲鐧借川涓庡皬鍒嗗瓙鐨勫嶅悎鐗╁湪絀洪棿涓夌淮緇撴瀯涓婄殑涓浜涜勫緥錛岄栧厛寰楁湁鏁版嵁鍟婏紝鏁版嵁浠庡摢閲屾潵錛熷氨鏄浠庝竴涓娑電洊鎵鏈夊凡緇忚В鏋愪笁緇寸粨鏋勭殑錏嬬櫧璐-灝忓垎瀛愬嶅悎鐗╃殑鏁版嵁搴撻噷闈涓嬭澆銆傝繖鏃跺欙紝鎵嬪姩涓涓涓鍘諱笅鏄劇劧鏄涓嶅彲鍙栫殑錛屾垜浠闇瑕佸啓涓鑴氭湰錛岃兘浠庣壒瀹氱殑緗戠珯閫夋嫨鎬у緱鎵歸噺涓嬭澆闇瑕佺殑淇℃伅銆俻ython鏄涓嶉敊鐨勯夋嫨銆
import urllib #python涓鐢ㄤ簬鑾峰彇緗戠珯鐨勬ā鍧
import urllib2, cookielib
鏈変簺緗戠珯璁塊棶鏃墮渶瑕乧ookie鐨勶紝python澶勭悊cookie浠g爜濡備笅錛
cj = ***.cookiejar ( )
opener = ***.build_opener( ***.httpcookieprocessor(cj) )
***.install_opener 錛坥pener錛
閫氬父鎴戜滑闇瑕佸湪緗戠珯涓鎼滅儲寰楀埌鎴戜滑闇瑕佺殑淇℃伅錛岃繖閲屽垎涓轟簩縐嶆儏鍐碉細
1. 絎涓縐嶏紝鐩存帴鏀瑰彉緗戝潃灝卞彲浠ュ緱鍒頒綘鎯寵佹悳緔㈢殑欏甸潰錛
def GetWebPage( x ): #鎴戜滑瀹氫箟涓涓鑾峰彇欏甸潰鐨勫嚱鏁幫紝x 鏄鐢ㄤ簬鍛堥掍綘鍦ㄩ〉闈涓鎼滅儲鐨勫唴瀹圭殑鍙傛暟
url = 'http://xxxxx/***.cgi?&' + 鈥樹綘鎯寵佹悳緔㈢殑鍙傛暟鈥 # 緇撳悎鑷宸遍〉闈㈡儏鍐甸傚綋淇鏀
page = ***.urlopen(url)
pageContent = ***.read( )
return pageContent #榪斿洖鐨勬槸HTML鏍煎紡鐨勯〉闈淇℃伅
2.絎浜岀嶏紝浣犻渶瑕佺敤鍒皃ost鏂規硶錛屽皢浣犳悳緔㈢殑鍐呭規斁鍦╬ostdata閲岄潰錛岀劧鍚庤繑鍥炰綘闇瑕佺殑欏甸潰
def GetWebPage( x ): #鎴戜滑瀹氫箟涓涓鑾峰彇欏甸潰鐨勫嚱鏁幫紝x 鏄鐢ㄤ簬鍛堥掍綘鍦ㄩ〉闈涓鎼滅儲鐨勫唴瀹圭殑鍙傛暟
url = 'http://xxxxx/xxx' #榪欎釜緗戝潃鏄浣犺繘鍏ユ悳緔㈢晫闈㈢殑緗戝潃
postData = ***.urlencode( { 鍚勭嶁榩ost鈥欏弬鏁拌緭鍏 } ) #榪欓噷闈㈢殑post鍙傛暟杈撳叆闇瑕佽嚜宸卞幓鏌
req= ***.request (url, postData)
pageContent = ***.urlopen (req). read( )
return pageContent #榪斿洖鐨勬槸HTML鏍煎紡鐨勯〉闈淇℃伅
鍦ㄨ幏鍙栦簡鎴戜滑闇瑕佺殑緗戦〉淇℃伅涔嬪悗錛屾垜浠闇瑕佷粠鑾峰緱鐨勭綉欏典腑榪涗竴姝ヨ幏鍙栨垜浠闇瑕佺殑淇℃伅錛岃繖閲屾垜鎺ㄨ崘浣跨敤 BeautifulSoup 榪欎釜妯″潡錛 python鑷甯︾殑娌℃湁錛屽彲浠ヨ嚜琛岀櫨搴﹁胺姝屼笅杞藉畨瑁呫 BeautifulSoup 緲昏瘧灝辨槸鈥樼編鍛崇殑奼も欙紝浣犻渶瑕佸仛鐨勬槸浠庝竴閿呮堡閲岄潰鎵懼埌浣犲枩嬈㈠悆鐨勪笢瑗褲
import re # 姝e垯琛ㄨ揪寮忥紝鐢ㄤ簬鍖歸厤瀛楃
from bs4 import BeautifulSoup # 瀵煎叆BeautifulSoup 妯″潡
soup = BeautifulSoup錛坧ageContent錛 #pageContent灝辨槸涓婇潰鎴戜滑鎼滅儲寰楀埌鐨勯〉闈
soup灝辨槸 HTML 涓鎵鏈夌殑鏍囩撅紙tag錛塀eautifulSoup澶勭悊鏍煎紡鍖栧悗鐨勫瓧絎︿覆錛屼竴涓鏍囧噯鐨則ag褰㈠紡涓猴細
hwkobe24
閫氳繃涓浜涜繃婊ゆ柟娉曪紝鎴戜滑鍙浠ヤ粠soup涓鑾峰彇鎴戜滑闇瑕佺殑淇℃伅錛
錛1錛 find_all ( name , attrs , recursive , text , **kwargs)
榪欓噷闈錛屾垜浠閫氳繃娣誨姞瀵規爣絳劇殑綰︽潫鏉ヨ幏鍙栭渶瑕佺殑鏍囩懼垪琛錛 姣斿 ***.find_all ('p') 灝辨槸瀵繪壘鍚嶅瓧涓衡榩鈥欑殑 鏍囩撅紝鑰***.find_all (class = "tittle") 灝辨槸鎵懼埌鎵鏈塩lass灞炴т負"tittle" 鐨勬爣絳撅紝浠ュ強***.find_all ( class = ***.compile('lass')) 琛ㄧず class灞炴т腑鍖呭惈鈥榣ass鈥欑殑鎵鏈夋爣絳撅紝榪欓噷鐢ㄥ埌浜嗘e垯琛ㄨ揪寮忥紙鍙浠ヨ嚜宸卞︿範涓涓嬶紝闈炲父鏈夌敤婊達級
褰撴垜浠鑾峰彇浜嗘墍鏈夋兂瑕佹爣絳劇殑鍒楄〃涔嬪悗錛岄亶鍘嗚繖涓鍒楄〃錛屽啀鑾峰彇鏍囩句腑浣犻渶瑕佺殑鍐呭癸紝閫氬父鎴戜滑闇瑕佹爣絳句腑鐨勬枃瀛楅儴鍒嗭紝涔熷氨鏄緗戦〉涓鏄劇ず鍑烘潵鐨勬枃瀛楋紝浠g爜濡備笅錛
tagList = ***.find_all (class="tittle") #濡傛灉鏍囩炬瘮杈冨嶆潅錛屽彲浠ョ敤澶氫釜榪囨護鏉′歡浣胯繃婊ゆ洿鍔犱弗鏍
for tag in tagList:
print ***.text
***.write ( str(***.text) ) #灝嗚繖浜涗俊鎮鍐欏叆鏈鍦版枃浠朵腑浠ュ悗浣跨敤
錛2錛塮ind( name , attrs , recursive , text , **kwargs )
瀹冧笌 find_all( ) 鏂規硶鍞涓鐨勫尯鍒鏄 find_all() 鏂規硶鐨勮繑鍥炵粨鏋滄槸鍊煎寘鍚涓涓鍏冪礌鐨勫垪琛,鑰 find() 鏂規硶鐩存帴榪斿洖緇撴灉
錛3錛塮ind_parents( ) find_parent( )
find_all() 鍜 find() 鍙鎼滅儲褰撳墠鑺傜偣鐨勬墍鏈夊瓙鑺傜偣,瀛欏瓙鑺傜偣絳. find_parents() 鍜 find_parent() 鐢ㄦ潵鎼滅儲褰撳墠鑺傜偣鐨勭埗杈堣妭鐐,鎼滅儲鏂規硶涓庢櫘閫歵ag鐨勬悳緔㈡柟娉曠浉鍚,鎼滅儲鏂囨。鎼滅儲鏂囨。鍖呭惈鐨勫唴瀹
錛4錛塮ind_next_siblings() find_next_sibling()
榪2涓鏂規硶閫氳繃 .next_siblings 灞炴у瑰綋 tag 鐨勬墍鏈夊悗闈㈣В鏋愮殑鍏勫紵 tag 鑺傜偣榪涗唬, find_next_siblings() 鏂規硶榪斿洖鎵鏈夌﹀悎鏉′歡鐨勫悗闈㈢殑鍏勫紵鑺傜偣,find_next_sibling() 鍙榪斿洖絎﹀悎鏉′歡鐨勫悗闈㈢殑絎涓涓猼ag鑺傜偣
錛5錛塮ind_previous_siblings() find_previous_sibling()
榪2涓鏂規硶閫氳繃 .previous_siblings 灞炴у瑰綋鍓 tag 鐨勫墠闈㈣В鏋愮殑鍏勫紵 tag 鑺傜偣榪涜岃凱浠, find_previous_siblings()鏂規硶榪斿洖鎵鏈夌﹀悎鏉′歡鐨勫墠闈㈢殑鍏勫紵鑺傜偣, find_previous_sibling() 鏂規硶榪斿洖絎涓涓絎﹀悎鏉′歡鐨勫墠闈㈢殑鍏勫紵鑺傜偣
錛6錛塮ind_all_next() find_next()
榪2涓鏂規硶閫氳繃 .next_elements 灞炴у瑰綋鍓 tag 鐨勪箣鍚庣殑 tag 鍜屽瓧絎︿覆榪涜岃凱浠, find_all_next() 鏂規硶榪斿洖鎵鏈夌﹀悎鏉′歡鐨勮妭鐐, find_next() 鏂規硶榪斿洖絎涓涓絎﹀悎鏉′歡鐨勮妭鐐
錛7錛塮ind_all_previous() 鍜 find_previous()
榪2涓鏂規硶閫氳繃 .previous_elements 灞炴у瑰綋鍓嶈妭鐐瑰墠闈㈢殑 tag 鍜屽瓧絎︿覆榪涜岃凱浠, find_all_previous() 鏂規硶榪斿洖鎵鏈夌﹀悎鏉′歡鐨勮妭鐐, find_previous()鏂規硶榪斿洖絎涓涓絎﹀悎鏉′歡鐨勮妭鐐
鍏蜂綋鐨勪嬌鐢ㄦ柟娉曡繕鏈夊緢澶氾紝鐢ㄥ埌榪欓噷浣犲簲璇ュ彲浠ヨВ鍐沖ぇ閮ㄥ垎闂棰樹簡錛屽傛灉瑕佹洿娣卞叆浜嗚В鍙浠ュ弬鑰冨畼鏂圭殑浣跨敤璇存槑鍝堬紒