PythonCrawl自學日誌(3)

来源:http://www.cnblogs.com/AlloCa/archive/2016/09/21/5894180.html
-Advertisement-
Play Games

2016年9月21日09:21:431.爬蟲的抓取周期:(1)首先生成初始請求爬第一個url,並指定一個回調函數被稱為與下載這些請求的響應。(2)第一個請求執行通過調用 start_requests()方法(預設情況下)生成 Request中指定的url start_urls和 parse方法作為請 ...


2016年9月21日09:21:43
1.爬蟲的抓取周期:
(1)首先生成初始請求爬第一個url,並指定一個回調函數被稱為與下載這些請求的響應。
(2)第一個請求執行通過調用 start_requests()方法(預設情況下)生成 Request中指定
的url start_urls和 parse方法作為請求的回調函數。
(3)在回調函數中,解析響應(網頁),並返回與提取的數據字典, Item對象, Request這
些對象的對象,或一個iterable。這些請求還將包含一個回調(也許相同),將由Scrapy然後
下載他們的反應由指定的回調。
(4)在回調函數中,您解析頁面內容,通常使用 選擇器(但您還可以使用BeautifulSoup,
lxml或其他機制你喜歡)與解析數據並生成項目。
(5)最後,返回的物品爬蟲通常會保存到資料庫(在一些 項目管道)或寫入一個文件使用
Feed exports.
2.爬蟲屬性值設定
Spider:
(1)name 爬蟲名字
(2)allowed_domains 爬蟲允許的功能變數名稱
(3)start_urls 網址的列表
(4)custom_settings 爬蟲的設置(包括了下載中間件、兩次下載間隙、下載超時、下載最大值
日誌開啟、日誌文件位置、日誌等級(預設debug)、
標準輸出是否存入日誌、存儲debug、隨機下載延遲、用戶代理(流浪器))
(5)crawler 綁定當前爬蟲的Crawler對象
(6)settings Settings類的一個實例,包含成員函數(from_crawler(crawler,*args,**kwargs)創建爬蟲、
start_request():無指定URL時調用、
make_requests_from_url(url)為url生成start_url、
parse(response)處理爬蟲得到的數據、
log(message[level,component])、
closed(原因))
CrawlSpider:通用型爬蟲,繼承Spider
(1)rules rule的列表,定義爬蟲特定行為
rule: scrapy.spiders.Rule(link_extractor(鏈接提取器),callback=None(是否回調),
cb_kwargs=None(傳遞給回調函數的參數(keyword argument)的字典),
follow=None(指定了根據該規則從response提取的鏈接是否需要跟進),
process_links=None(過濾鏈接),
process_request=None(提取到每個request時都會調用該函數,過濾request))
XMLFeedSpider:通過迭代各個節點分析XML源
(1)iterator:用於確定使用哪個迭代器的字元串屬性
iternodes:推薦,基於正則表達式的快速迭代器
xml 使用 Selector 的迭代器,使用DOM存取,數據量大時會出現問題
html 使用 Selector 的迭代器,使用DOM存取,數據量大時會出現問題
(2)itertag 迭代起點字元串
(3)namespace 一個由(prefix,url)元組所組成的list,定義改文檔中會被Spider處理的可用的namespace,
prefix 及 uri 會被自動調用 register_namespace() 生成namespace
(4)adapt_response(response) 接受一個response並返回一個response(可以相同也可以不同)
(5)parse_node(response,selector) 節點符合提供的標簽名時(itertag)該方法被調用,
返回一個 Item 對象或者 Request 對象 或者一個包含二者的可迭代對象(iterable)
(6)process_results(response,results) spider返回結果(item或request)時該方法被調用,返回一個結果的列表

CSVFeedSpider:類似於XMLFeedSpider的爬蟲,除了遍歷模式為按其行遍歷,每次迭代是使用parse_row()
(1)delimiter csv文件中用於區分欄位的分隔符,預設‘,’
(2)headers csv文件中包含用來提取欄位的行的列表
(3)parse_row(response,row) 可以覆蓋 adapt_response 及 process_results 方法來進行預處理(pre-processing)
及後(post-processing)處理
SitemapSpider:通過SiteMaps(網站地圖)來發現爬取的URL,能從robotos.txt中獲取sitemap的url
(1)sitemap_urls 爬取的url的sitemap的url列表(list)。 您也可以指定為一個 robots.txt ,
spider會從中分析並提取url
(2)sitemap_rules 一個包含 (regex, callback) 元組的列表(list)
regex 匹配網站地圖提供的URL的正則表達式
callback 指定了匹配正則表達式的url的處理函數
(3)sitemap_follow 匹配要跟進的sitemap的正則表達式的列表
(4)sitemap_alternate_links url有可選連接時,是否跟進,預設關閉


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本節探討Java中的容器類ArrayList,它有哪些方法?內部是如何實現的?有什麼特點?與數組如何轉換?迭代是什麼?為什麼要有它?內部是如何實現的?有哪些易犯的錯誤?Collection/List/RandomAccess都用於什麼目的? ...
  • 1、需求 做一個項目會有很多模塊,主要是方便復用,通過各個模塊之間聚合。模塊也可以獨立出來,如公用類庫,也可以在做其它項目中使用。該文的實例會有兩個模塊:分別為dallin web模塊,dallin utils工具類模塊 2、新建一個Maven父項目 1. 打開IDEA工具,通過file——new— ...
  • 還記得那些美妙的夜晚嗎 你洗洗打算看一個小電影就睡了,這個時候突然想起來今天晚上是伺服器更新的日子,你要在凌晨時分去把最新的代碼更新到伺服器,以保證明天大家一覺醒來打開網站,發現昨天的 Bug 都不見了。這時候你瞬間沒有了看電影的興緻了,這應該就是一個運維人員的日常了吧! 為什麼要在凌晨時分去更新服 ...
  • 上面運行結果是 [49 50][51 50] 。 --> 結論: bytes.Buffer Reset之後,如果再寫入新的數據,如果數據的長度沒有超過Reset之前緩衝區的長度,那麼Buffer內部不會重新開闢記憶體,也就是說, 寫入的數據會覆蓋之前的數據。 在本例中,這裡【之前的數據】就是那個 b ...
  • 註意:這裡使用了mybatis3.2.1版本,剛開始用了3.4.1的版本,會報一個很奇怪的錯(java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljav ...
  • 這篇文章主要介紹了PHP的mysqli_query參數MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的區別,本文給出了這兩個參數的5個區別,需要的朋友可以參考下 雖然nosql變得流行,但是我感覺sql還是主流今天在翻php manul的時候,發現mysqli 的查詢可以 ...
  • 在網上查了許多解決方法,下麵是自己測試過能行的方法,只需在nginx.conf文件添加內容就可以了. 打開nginx.conf文件 ...
  • 獨占鎖 -- 鎖在一個時間點只能被一個線程鎖占有。根據鎖的獲取機制,它又劃分為“公平鎖”和“非公平鎖”。公平鎖,是按照通過CLH等待線程按照先來先得的規則,公平的獲取鎖;而非公平鎖,則當線程要獲取鎖時,它會無視CLH等待隊列而直接獲取鎖。獨占鎖的典型實例子是ReentrantLock,此外,Reen... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...