Python通過urllib批量爬取網頁鏈接


為了通過爬蟲快速獲取網站中的信息,我們通常將第一次爬取的網頁中的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列表。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM