原创 提高scrapy的抓取效率

增加併發 默認scrapy開啓的併發線程的個數是32個,可以適當的進行增加。在settings中進行設置CONCURRENT_REQUESTS=100 降低日誌級別 在運行的時候,會有大量的日誌信息的輸出,爲了減少CPU的使用率。可以設

原创 redis常見的面試題

redis和memched有什麼區別,爲什麼單線程的redis比多線程的memched效率高   string:ky類型   hash:字典redis的哈希結構可以使你像在數據庫中更新一個屬性一樣只修改某一項屬性值   list:實現消息隊

原创 scrapy運行的整個流程

    Spiders:   負責處理所有的response,從這裏面分析提取數據,獲取Item字段所需要的數據,並將需要跟進的URL提交給引擎,再次進入到Scheduler調度器中 Engine:   框架的核心,負責Spider、It

原创 使用RequestsCookieJar自動保存並傳遞cookie

使用python的requests開發爬蟲程序的時候,經常需要將之前請求返回的cookie值作爲下一個請求的cookie進行調用,比如模擬登錄之後的返回的sessionID,就是需要作爲後續請求的cookie參數 分成三步走:   1、通過

原创 使用Scrapyd部署Scrapy爬蟲到遠程服務器上

1、準備好爬蟲程序 2、修改項目配置   找到項目配置文件scrapy.cnf,將裏面註釋掉的url解開來   本代碼需要連接數據庫,因此需要修改對應的數據庫配置     其實就是將裏面的數據庫地址進行修改,變成遠程數據庫服務器地址,需要保

原创 常見的反爬蟲的方式

1、JS寫的cookie   當我們要寫爬蟲爬某個網頁裏面的數據的時候,無非就是發開網頁,然後查看源代碼,如果html裏面有我們要的數據的話,那樣也就簡單了,直接就可以用requests請求網址得到網頁源碼,然後解析提取一下我們要的內容就可

原创 爬蟲與反爬蟲

爬蟲:   我們爲了獲得任何信息而採用任何手段對某一個網站進行的‘攻擊’行爲,之所以稱之爲‘攻擊行爲’,主要是因爲我們對網站的爬蟲過程會對網站造成不同程度上的影響。而爬蟲與我們手動點擊訪問網站數據的區別主要就在於這個是批量的操作   反爬蟲

原创 retrying模塊的使用

安裝模塊:pip3 install retrying   使用方式: 使用retrying模塊提供的retry模塊 通過裝飾器的方式使用,讓裝飾器的函數反覆的執行 retry可以傳入參數stop_max_attempt_number,讓函

原创 Selenium詳解

安裝selenium    pip3 install selenium # 查看是否安裝成功 # 進入到python環境中 import selenium print(selenium.__version__)    

原创 scrapy和scrapy-redis的區別

scrapy是一個python爬蟲框架,爬取的效率極高,具有高度的定製性,但是不支持分佈式。而scrapy-redis是一套基於redis庫,運行在scrapy框架之上的組件,可以讓scapy支持分佈式策略 Slaver端共享Master端

原创 通過pyppeteer來爬取今日頭條

import asyncio from pyppeteer import launch async def main(): browser = await launch() page = await bro

原创 Elasticsearch簡介

Elasticsearch是一個分佈式可擴展的實時搜索引擎和分析引擎,一個建立在全文搜索引擎基礎上的搜索引擎,它不僅包括全文搜索功能,還可以進行如下工作: 分佈式實時文件存儲,並將每一個字段都編入到索引中,使其可以被搜索 實時分析的分佈式

原创 scrapy中的ImagePipeline下載圖片到本地、並提取本地的保存地址

通過scrapy內置到ImagePipeline下載圖片到本地 在settings中打開 ITEM_PIPELINES的註釋,並在這裏面加入 'scrapy.pipelines.images.ImagesPipeline':5,

原创 分佈式爬蟲與增量式爬蟲

首先要說一下scrapy-redis   配置文件settings主要配置Scrapy_Redis的功能,其中配置SCHEDULER是改變Scrapy原有的調度器。當項目運行的時候,Scrapy從配置文件中讀取配置信息,根據配置信息運行Sc

原创 scrapy框架來爬取壁紙網站並將圖片下載到本地文件中

首先需要確定要爬取的內容,所以第一步就應該是要確定要爬的字段:   首先去items中確定要爬的內容 class MeizhuoItem(scrapy.Item): # define the fields for your it