ctf up怎么写 write_??零基础写网络爬虫的思路??
生活随笔
收集整理的這篇文章主要介紹了
ctf up怎么写 write_??零基础写网络爬虫的思路??
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
網絡爬蟲,用一句話簡單總結,就是一種按照一定的規則,自動的抓取萬維網信息的程序或者腳本。寫這篇文章的初衷是有個知友私信我說,模仿了很多網上用Python寫爬蟲的例子,但到了需要自己動手寫爬蟲的時候又不知道怎么寫了。我覺得出現這種情況還是很正常的,至少我個人是這么過來的。這篇文章僅供初學者寫爬蟲程序時作為一個參考,畢竟本人已經很久沒寫過爬蟲程序了,但爬蟲程序的大體框架我還是很清晰的,此篇展示的是我對爬蟲的一些理解。之前寫過的一些爬蟲程序PythonCrawler,有興趣的朋友可以看看,找找自信這些代碼現在看來寫的確實挺爛的 。
寫爬蟲遵循的基本框架
我自己在寫爬蟲時一般基本遵循下面的框架形式,按照這個框架來編寫代碼。
演示實例
通過對[ONE]這個網站的爬取來演示上述模塊的編寫,ONE網站的內容展示如下圖所示。
而數據我只爬取一張圖片和一句箴言,備注(該演示遠非最佳實踐,只是為了演示框架流程)。
- url調度模塊編寫
通過對ONE網站的分析,發現它的翻頁就是在url后面的數字上加一進入下一頁。
ROOT_URL = "http://wufazhuce.com/one/" URL_NUM = 14 #14頁之后才開始有數據def yield_url(ROOT_URL, URL_NUM):return ROOT_URL + str(URL_NUM)- 網頁下載模塊編寫
- 數據抽取模塊編寫
通過對圖片和箴言查看元素可知相關代碼鑲嵌情況。
因此可以編寫數據抽取模塊
import redef get_data(html):img_url_regex = re.compile('<img src="(.*?)" alt="" />')cite_regex = re.compile('<div class="one-cita">(.*?)</div>', re.S)img_url = re.findall(img_url_regex, html)[0]cite = re.findall(cite_regex, html)[0].strip()return img_url, cite- 數據存儲模塊編寫
整合所有模塊輸出爬取結果
import re import requests as rqROOT_URL = "http://wufazhuce.com/one/" URL_NUM = 14def yield_url(ROOT_URL, URL_NUM):return ROOT_URL + str(URL_NUM)def get_html(url):return rq.get(url).content.decode("utf-8")def get_data(html):img_url_regex = re.compile('<img src="(.*?)" alt="" />')cite_regex = re.compile('<div class="one-cita">(.*?)</div>', re.S)img_url = re.findall(img_url_regex, html)[0]cite = re.findall(cite_regex, html)[0].strip()return img_url, cite def save_data(img_url, cite, URL_NUM):with open("./{}.jpg".format(URL_NUM), "wb") as fp:fp.write(rq.get(img_url).content)with open("./cite{}.txt".format(URL_NUM), "w") as fp:fp.write(cite)return URL_NUM + 1def main(ROOT_URL, URL_NUM, number):for _ in range(number):url = yield_url(ROOT_URL, URL_NUM)html = get_html(url) img_url, cite = get_data(html) URL_NUM = save_data(img_url, cite, URL_NUM)if __name__ == "__main__":try:main(ROOT_URL, URL_NUM, 20)except:pass結果展示:
總結?
本文的目的只是為了讓初學者對寫爬蟲的大體流程有較為清晰的了解。天高任鳥飛,海闊憑魚躍!每個人心中的爬蟲框架(流程)各異,實現方法各異自由發揮空間極大,但有一點務必注意那就是遵守中華人民共和國的法律。
總結
以上是生活随笔為你收集整理的ctf up怎么写 write_??零基础写网络爬虫的思路??的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue生成静态html文件_vue单文件
- 下一篇: mysql 数据迁移_【AWS 功能】