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()鏂规硶杩斿洖绗涓涓绗﹀悎鏉′欢鐨勮妭鐐
鍏蜂綋鐨勪娇鐢ㄦ柟娉曡繕鏈夊緢澶氾紝鐢ㄥ埌杩欓噷浣犲簲璇ュ彲浠ヨВ鍐冲ぇ閮ㄥ垎闂棰樹簡锛屽傛灉瑕佹洿娣卞叆浜嗚В鍙浠ュ弬鑰冨畼鏂圭殑浣跨敤璇存槑鍝堬紒