這篇文章主要介紹了python如何抓取多種類(lèi)型的頁(yè)面,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)2013年至今,先為遼陽(yáng)等服務(wù)建站,遼陽(yáng)等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢(xún)服務(wù)。為遼陽(yáng)企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
通過(guò)URL
一個(gè)網(wǎng)站中所有的博客文章可能都會(huì)包含一個(gè) URL(例如 http://example.com/blog/title-of-post)。
通過(guò)網(wǎng)站中存在或者缺失的特定字段
如果一個(gè)頁(yè)面包含日期,但是不包含作者名字,那你可以將其歸類(lèi) 為新聞稿。如果它有標(biāo)題、主圖片、價(jià)格,但是沒(méi)有主要內(nèi)容,那么它 可能是一個(gè)產(chǎn)品頁(yè)面。
通過(guò)頁(yè)面中出現(xiàn)的特定標(biāo)簽識(shí)別頁(yè)面
即使不抓取某個(gè)標(biāo)簽內(nèi)的數(shù)據(jù),你仍然可以利用這個(gè)標(biāo)簽。你的爬 蟲(chóng)可以尋找類(lèi)似于
這樣的元素來(lái)識(shí) 別產(chǎn)品頁(yè)面,即便是爬蟲(chóng)對(duì)相關(guān)產(chǎn)品的內(nèi)容并不感興趣。
為了跟蹤多個(gè)頁(yè)面類(lèi)型,你需要在 Python 中有多個(gè)類(lèi)型的頁(yè)面對(duì)象。 這通過(guò)兩種方式來(lái)實(shí)現(xiàn)。
如果頁(yè)面都是相似的(它們基本上都是相同類(lèi)型的內(nèi)容),你可能需要 在現(xiàn)有的網(wǎng)頁(yè)對(duì)象中加入一個(gè) pageType 屬性:
class Website:
"""所有文章/網(wǎng)頁(yè)的共同基類(lèi)"""
def __init__(self, type, name, url, searchUrl, resultListing,
resultUrl, absoluteUrl, titleTag, bodyTag):
self.name = name
self.url = url
self.titleTag = titleTag
self.bodyTag = bodyTag
self.pageType = pageType
如果你在一個(gè)類(lèi) SQL 的數(shù)據(jù)庫(kù)中對(duì)這些頁(yè)面進(jìn)行排序,這種模式類(lèi)型 意味著這些頁(yè)面應(yīng)該被存放在同一張表中,并且加入一個(gè)額外的 pageType 列。
如果你抓取的頁(yè)面或內(nèi)容各不相同(它們包含不同類(lèi)型的字段),就需 要為每個(gè)頁(yè)面類(lèi)型創(chuàng)建一個(gè)新的對(duì)象。當(dāng)然,有些東西是所有網(wǎng)頁(yè)共有 的——它們都有一個(gè) URL,也可能都有一個(gè)名稱(chēng)或者頁(yè)面標(biāo)題。這種 情況非常適合用子類(lèi):
class Website:
"""所有文章/網(wǎng)頁(yè)的共同基類(lèi)"""
def __init__(self, name, url, titleTag):
self.name = name
self.url = url
self.titleTag = titleTag
這不是一個(gè)由你的爬蟲(chóng)直接使用的對(duì)象,而是將被你的頁(yè)面類(lèi)型引用的 對(duì)象:
class Product(Website):
"""產(chǎn)品頁(yè)面要抓取的信息"""
def __init__(self, name, url, titleTag, productNumber, price):
Website.__init__(self, name, url, TitleTag)
self.productNumberTag = productNumberTag
self.priceTag = priceTag
class Article(Website):
"""文章頁(yè)面要抓取的信息"""
def __init__(self, name, url, titleTag, bodyTag, dateTag):
Website.__init__(self, name, url, titleTag)
self.bodyTag = bodyTag
self.dateTag = dateTag
這個(gè)產(chǎn)品頁(yè)面擴(kuò)展了Website基類(lèi),并且加入了僅適用于產(chǎn)品的productNumber和price屬性,而Article類(lèi)加入了body和date屬性,這兩個(gè)屬性是不適用于產(chǎn)品的。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“python如何抓取多種類(lèi)型的頁(yè)面”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
本文名稱(chēng):python如何抓取多種類(lèi)型的頁(yè)面-創(chuàng)新互聯(lián)
轉(zhuǎn)載來(lái)于:
http://weahome.cn/article/cdjpis.html