Python爬蟲(chóng)獲取頁(yè)面所有URL鏈接過(guò)程詳解
如何獲取一個(gè)頁(yè)面內(nèi)所有URL鏈接?在Python中可以使用urllib對(duì)網(wǎng)頁(yè)進(jìn)行爬取,然后利用Beautiful Soup對(duì)爬取的頁(yè)面進(jìn)行解析,提取出所有的URL。
什么是Beautiful Soup?
Beautiful Soup提供一些簡(jiǎn)單的、python式的函數(shù)用來(lái)處理導(dǎo)航、搜索、修改分析樹(shù)等功能。它是一個(gè)工具箱,通過(guò)解析文檔為用戶(hù)提供需要抓取的數(shù)據(jù),因?yàn)楹?jiǎn)單,所以不需要多少代碼就可以寫(xiě)出一個(gè)完整的應(yīng)用程序。
Beautiful Soup自動(dòng)將輸入文檔轉(zhuǎn)換為Unicode編碼,輸出文檔轉(zhuǎn)換為utf-8編碼。你不需要考慮編碼方式,除非文檔沒(méi)有指定一個(gè)編碼方式,這時(shí),Beautiful Soup就不能自動(dòng)識(shí)別編碼方式了。
BeautifulSoup支持Python標(biāo)準(zhǔn)庫(kù)中的HTML解析器,還支持一些第三方的解析器,如果我們不安裝它,則 Python 會(huì)使用 Python默認(rèn)的解析器,lxml 解析器更加強(qiáng)大,速度更快。
全部代碼:
from bs4 import BeautifulSoup import time,re,urllib2 t=time.time() websiteurls={} def scanpage(url): websiteurl=url t=time.time() n=0 html=urllib2.urlopen(websiteurl).read() soup=BeautifulSoup(html) pageurls=[] Upageurls={} pageurls=soup.find_all("a",href=True) for links in pageurls: if websiteurl in links.get("href") and links.get("href") not in Upageurls and links.get("href") not in websiteurls: Upageurls[links.get("href")]=0 for links in Upageurls.keys(): try: urllib2.urlopen(links).getcode() except: print "connect failed" else: t2=time.time() Upageurls[links]=urllib2.urlopen(links).getcode() print n, print links, print Upageurls[links] t1=time.time() print t1-t2 n+=1 print ("total is "+repr(n)+" links") print time.time()-t scanpage(http://news.163.com/)
利用BeautifulSoup還可以有針對(duì)性的獲取網(wǎng)頁(yè)鏈接:Python爬蟲(chóng)獲取網(wǎng)頁(yè)上的鏈接,通過(guò)beautifulsoup的findall()方法對(duì)匹配的標(biāo)簽進(jìn)行查找。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用Python進(jìn)行Ping測(cè)試的操作指南
在網(wǎng)絡(luò)工程中,Ping測(cè)試是一種常用的網(wǎng)絡(luò)診斷工具,用于檢查網(wǎng)絡(luò)連接的可達(dá)性和響應(yīng)時(shí)間,隨著Python編程語(yǔ)言的廣泛應(yīng)用,越來(lái)越多的網(wǎng)絡(luò)工程師開(kāi)始使用Python進(jìn)行自動(dòng)化網(wǎng)絡(luò)測(cè)試和管理任務(wù),本篇文章將詳細(xì)介紹如何使用Python進(jìn)行Ping測(cè)試,需要的朋友可以參考下2024-06-06使用Python自動(dòng)化自定義字體混淆信息的方法實(shí)例
今天小編就為大家分享一篇關(guān)于使用Python自動(dòng)化自定義字體混淆信息的方法實(shí)例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02python 讀取鼠標(biāo)點(diǎn)擊坐標(biāo)的實(shí)例
今天小編就為大家分享一篇python 讀取鼠標(biāo)點(diǎn)擊坐標(biāo)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12Python實(shí)現(xiàn)將Excel轉(zhuǎn)換成為image的方法
今天小編就為大家分享一篇Python實(shí)現(xiàn)將Excel轉(zhuǎn)換成為image的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10python如何解析復(fù)雜sql,實(shí)現(xiàn)數(shù)據(jù)庫(kù)和表的提取的實(shí)例剖析
這篇文章主要介紹了python如何解析復(fù)雜sql,實(shí)現(xiàn)數(shù)據(jù)庫(kù)和表的提取的實(shí)例剖析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05python統(tǒng)計(jì)日志ip訪(fǎng)問(wèn)數(shù)的方法
這篇文章主要介紹了python統(tǒng)計(jì)日志ip訪(fǎng)問(wèn)數(shù)的方法,涉及Python操作日志文件及正則匹配的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-07-07