爬蟲 綜合案例流程版

2022-07-20 17:30:19 字數 1745 閱讀 8943

通常在開發過程中不可能一下子就把init寫得完整,先把最易用到的,已經想到的初始化,後面的在編寫其他函式想到時再來init裡編寫

使用不同的佇列會造成bfs和dfs的效果 使用先進先出佇列產生廣度優先搜尋,使用先進後出(棧)產生深度優先搜尋

text:返回的是unicode 型的資料,一般是在網頁的header中定義的編碼形式,如果想要提取文字就用text;

content:返回的是bytes,二級制型的資料;想要提取、檔案,就要用到content;

.text是現成的字串,.content還要編碼,但是.text不是所有時候顯示都正常,這是就需要用.content進行手動編碼。

儲存函式:將爬取內容md5加密儲存到檔案中,注:使用mongodb儲存結果則無需次函式

方式:lxml、beautifulsoup、正則

lxml

1 html =lxml.html.fromstring(html_content)

2 html_data = html.xpath('

//a/@href

')

beautifulsoup

1 soup = beautifulsoup('

lxml')

2 a_list = soup.find_all('a'

)3for a in

a_list:

4print(a['

href

'])

正則

1 url_regex = re.compile('

]+href=["\'](.*?)["\']

', re.ignorecase)

2return url_regex.findall(html_content.decode("

utf-8

"))

實現乙個類方法的時候,要注意類方法是否使用了當前類的屬性或其他方法,如果未使用就說明和當前類沒有直接關係,最好獨立出來,當做工具方法

1

urljoin:拼接**,若引數2**是正確格式,那麼拼接的結果只是引數2**,引數1**忽略;若引數2**是錯誤格式或是字尾path,那麼和引數1**進行拼接

限流:設定爬取的間隔時間是為了避免ip被封鎖,隨機間隔時間更可靠

初始化方法

間隔方法執行流程

2 綜合案例

1.逆序對及應用 2.學會應用排序演算法 3.理解單調佇列及應用 4.理解二分法 1.逆序對 設 a 為乙個有 n 個數字的有序集 n 1 其中所有數字各不相同。如果存在正整數 i,j 使得 1 i j n 而且 a i a j 則 這個有序對稱為 a 的乙個逆序對,也稱作逆序數。使用歸併排序演算法...

ansible roles綜合案例

ansible自1.2版本引入的新特性,用於層次性,結構化地組織playbook。roles能夠根據層次結構自動裝載變數檔案 tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。簡單來講,roles就是通過分別將變數 檔案 任務 模板及處理器放置於...

python爬蟲案例 Python爬蟲案例集合

在python2.x裡面有urllib和urllib2 在python3.x裡面就把urllib和urllib2合成乙個urllib urllib3是在python3.x了裡面新增的第三方擴充套件。import urllib.request 向指定的url位址傳送請求,並返回伺服器響應的類檔案物件 ...