為了通過爬蟲快速獲取網站中的信息,我們通常將第一次爬取的網頁中的url形成一個待爬取的列表
為了訪問網站以及對網站源代碼進行分析,這里使用urllib的request庫獲取網頁源代碼,使用lxml庫對網頁進行結構分析。
首先引用需要的庫
import urllib.request import lxml.etree
接下來我們從中獲取網頁中的url鏈接以及其文本標題,保存到文件夾中,這里采用文本文件的形式進行保存
def htmlanalyze(url1): text = requests.get(url1).text doc = lxml.etree.HTML(text) root = doc.xpath("/nodename") print(root) f=open("./data/"+'allessi.txt','a') print(len(text)) for line in text: line_name = line.xpath("./a/text()")[0].strip() line_url = line.xpath("./a/@href")[0] f.write(line_name+'$$'+line_url+'\n')
從一個網頁中獲取url列表之后,我們將其進行去重,排序處理,之后就可以循環對列表中的url進行訪問了
在爬取的過程中由於高頻率的多次訪問同一個網站,而正常瀏覽網頁不會出現那么頻繁的訪問行為,對於有反爬蟲或其他保護機制的網站會對異常訪問的IP采取訪問限制,這里有幾種應對措施。
1.對於高頻訪問導致的訪問限制,可以通過主動降低訪問頻率來避免被服務端限流,可在程序中加入sleep函數增加網站訪問的時間間隔。
這里使用python自帶的time庫
import time
在循環訪問網頁的位置添加以下代碼即可,括號中的delay為希望程序的延遲時間,單位為秒
time.sleep(delay)
2.通過代理使用不同的ip地址對網站進行訪問。
不同的IP可以在網上找到一些可以使用的免費ip資源,注意大多數ip不是永久有效的。
需要定時更新ip列表。