最近中文字幕2019高清,亚洲人成高清在线播放,男生淦哭男生图片动漫有字,国产亚洲精品九九久在线观看,无码av专区丝袜专区

超輕量級爬蟲(chóng)框架:looter

優(yōu)采云 發(fā)布時(shí)間: 2022-06-14 14:45

  超輕量級爬蟲(chóng)框架:looter

  ?

  作者:半載流殤,Pythonistia && Otaku,努力轉行中的一位測繪人員です

  主頁(yè):/people/ban-zai-liu-shang

  爬蟲(chóng)總共就三大步驟:發(fā)起請求——解析數據——存儲數據,這樣就足以寫(xiě)出最基本的爬蟲(chóng)了。諸如像Scrapy這樣的框架,可以說(shuō)是集成了爬蟲(chóng)的一切,但是新人可能會(huì )用的不怎么順手,看教程可能還會(huì )踩各種各樣的坑,而且Scrapy本身體積也有點(diǎn)大。因此,本人決定親手寫(xiě)一個(gè)輕量級的爬蟲(chóng)框架——looter,里面集成了調試和爬蟲(chóng)模板這兩個(gè)核心功能,利用looter,你就能迅速地寫(xiě)出一個(gè)高效的爬蟲(chóng)。另外,本項目的函數文檔也相當完整,如果有不明白的地方可以自行閱讀源碼。

  安裝

  <p>$ pip install looter</p>

  僅支持Python3.6及以上版本。

  快速開(kāi)始

  讓我們先來(lái)擼一個(gè)非常簡(jiǎn)單的圖片爬蟲(chóng):首先,用shell獲取網(wǎng)站

  <p>$ looter shell konachan.com/post</p>

  然后用2行代碼就可以將圖片抓取到本地

  <p>>>> imgs = tree.cssselect('a.directlink')

  >>> save_imgs(imgs)</p>

  或者只用1行也行:d

  <p>>>> save_imgs(links(res, search='jpg'))</p>

  工作流

  如果你想迅速擼出一個(gè)爬蟲(chóng),那么你可以用looter提供的模板來(lái)自動(dòng)生成一個(gè)

  <p>$ looter genspider [--async]</p>

  在這行代碼中,tmpl是模板,分為data和image兩種模板。

  async是一個(gè)備用的選項,它使得生成的爬蟲(chóng)核心用asyncio而非線(xiàn)程池。

  在生成的模板中,你可以自定義domain和tasklist這兩個(gè)變量。

  什么是tasklist?實(shí)際上它就是你想要抓取的頁(yè)面的所有鏈接。

  以為例,你可以使用列表推導式來(lái)創(chuàng )建自己的tasklist:

  <p>domain = 'https://konachan.com'

  tasklist = [f'{domain}/post?page={i}' for i in range(1, 9777)]</p>

  然后你就要定制你的crawl函數,這是爬蟲(chóng)的核心部分。

  <p>def crawl(url):

   ? ?tree = lt.fetch(url)

   ? ?items = tree.cssselect('ul li')

   ? ?for item in items:

   ? ? ? ?data = dict()

   ? ? ? ?# data[...] = item.cssselect(...)

   ? ? ? ?pprint(data)</p>

  在大多數情況下,你所要抓取的內容是一個(gè)列表(也就是HTML中的ul或ol標簽),可以用css選擇器將它們保存為items變量。

  然后,你只需使用for循環(huán)來(lái)迭代它們,并抽取你想要的數據,將它們存儲到dict中。

  但是,在你寫(xiě)完這個(gè)爬蟲(chóng)之前,最好用looter提供的shell來(lái)調試一下你的cssselect代碼是否正確。

  <p>>>> items = tree.cssselect('ul li')

  >>> item = items[0]

  >>> item.cssselect(anything you want to crawl)

  # 注意代碼的輸出是否正確!</p>

  調試完成后,你的爬蟲(chóng)自然也就完成了。怎么樣,是不是很簡(jiǎn)單:)

  當然,本人也編寫(xiě)了好幾個(gè)爬蟲(chóng)例子,可供參考。

  函數

  looter為用戶(hù)提供了很多實(shí)用的函數。

  view

  在爬取頁(yè)面前,你最好確認一下頁(yè)面的渲染是否是你想要的

  <p>>>> view(url)</p>

  save_imgs

  當你獲取了一堆圖片鏈接時(shí),用它可以直接將它們保存到本地

  <p>>>> img_urls = [...]

  >>> save_imgs(img_urls)</p>

  alexa_rank

  可以獲取網(wǎng)站的reach和popularity指數(人氣度),此函數返回一個(gè)元組(url, reachrank, popularityrank)

  <p>>>> alexa_rank(url)</p>

  links

  獲取網(wǎng)頁(yè)的所有鏈接

  <p>>>> links(res) ? ? ? ? ? ? ? ? ?# 獲取所有鏈接

  >>> links(res, absolute=True) ? # 獲取絕對鏈接

  >>> links(res, search='text') ? # 查找指定鏈接</p>

  同樣地,你也可以用正則表達式來(lái)獲取匹配的鏈接

  <p>>>> re_links(res, r'regex_pattern')</p>

  saveasjson

  將所得結果保存為json文件,支持按鍵值排序

  <p>>>> total = [...]

  >>> save_as_json(total, name='text', sort_by='key')</p>

  parse_robots

  用于爬取網(wǎng)站robots.txt上的所有鏈接。這個(gè)在做全站爬蟲(chóng)或者遞歸式url爬蟲(chóng)時(shí)頗為有效

  <p>>>> parse_robots(url)</p>

  login

  有一些網(wǎng)站必須要先登錄才能爬取,于是就有了login函數,本質(zhì)其實(shí)就是建立session會(huì )話(huà)向服務(wù)器發(fā)送帶有data的POST請求。 但是,每個(gè)網(wǎng)站的登錄規則都各不相同,想要找到合適的postdata還是要費一番功夫的,而且更有甚者還要你構造param或header參數。 不過(guò)幸運的是在github上已經(jīng)有人整理好了各大網(wǎng)站的模擬登錄方法——fuck-login,本人很是佩服。 總之考驗各位抓包的能力了,以下為模擬登錄網(wǎng)易126郵箱(要求參數:postdata和param)

  <p>>>> params = {'df': 'mail126_letter', 'from': 'web', 'funcid': 'loginone', 'iframe': '1', 'language': '-1', 'passtype': '1', 'product': 'mail126',

   'verifycookie': '-1', 'net': 'failed', 'style': '-1', 'race': '-2_-2_-2_db', 'uid': 'webscraping123@126.com', 'hid': '10010102'}

  >>> postdata = {'username': 你的用戶(hù)名, 'savelogin': '1', 'url2': 'http://mail.126.com/errorpage/error126.htm', 'password': 你的密碼}

  >>> url = "https://mail.126.com/entry/cgi/ntesdoor?"

  >>> res, ses = login(url, postdata, params=params) # res為post請求后的頁(yè)面,ses為請求會(huì )話(huà)

  >>> index_url = re.findall(r'href = "(.*?)"', res.text)[0] # 在res中獲取重定向主頁(yè)的鏈接

  >>> index = ses.get(index_url) # 用ses會(huì )話(huà)訪(fǎng)問(wèn)重定向鏈接,想確認成功的話(huà)print下即可</p>

  Python網(wǎng)絡(luò )爬蟲(chóng)學(xué)習系列課程共9節,提供課件和所有小節課程源代碼。課程由《從零開(kāi)始學(xué)Python網(wǎng)絡(luò )爬蟲(chóng)》圖書(shū)作者、簡(jiǎn)書(shū)知名博主、Python網(wǎng)絡(luò )爬蟲(chóng)專(zhuān)家羅攀負責主講。

  第1講:Python零基礎語(yǔ)法入門(mén)

  環(huán)境安裝

  變量與字符串

  流程控制

  數據結構

  文件操作

  第2講:正則表達式爬蟲(chóng)

  網(wǎng)絡(luò )連接

  爬蟲(chóng)原理

  Chrome瀏覽器安裝和使用

  Request庫使用

  正則表達式

  csv文件存儲

  第3講:Lxml庫與xpath語(yǔ)法

  Excel存儲

  lxml庫

  Xpath語(yǔ)法

  第4講:API爬蟲(chóng)

  API概念

  百度地圖API調用

  JSON數據解析

  圖片爬蟲(chóng)

  第5講:異步加載

  MySQL數據庫安裝

  MySQL數據庫簡(jiǎn)單使用

  Python操作數據庫

  異步加載

  逆向工程

  綜合案例

  第6講:表單交互與模擬登陸

  post請求

  逆向工程

  提交cookie

  綜合案例

  第7講:Selenium模擬瀏覽器

  Selenium

  PhantomJS

  異步加載處理

  網(wǎng)頁(yè)操作處理

  綜合案例

  第8講:Scrapy入門(mén)

  Scrapy安裝

  創(chuàng )建項目

  各組件介紹

  綜合案例

  第9講:Scrapy精進(jìn)

  跨頁(yè)面爬蟲(chóng)

  存儲數據庫

0 個(gè)評論

要回復文章請先登錄注冊


官方客服QQ群

微信人工客服

QQ人工客服


線(xiàn)

最近中文字幕2019高清,亚洲人成高清在线播放,男生淦哭男生图片动漫有字,国产亚洲精品九九久在线观看,无码av专区丝袜专区