scrapy多爬蟲以及爬取速度

2021-08-11 18:37:35 字數 1446 閱讀 1939

主要這段時間一直使用的就是scrapy這個框架,因為公司裡面需要爬取大量的**,所以才使用了多爬蟲,但是目前測試也只是幾十個,一直也想不到更好的方法去同時抓取成千上百個結構不同的**,所以也很是苦逼的用了scrapy裡面的多爬蟲,對每個**分別解析,還好雖然幾次改需求但是欄位都是統一的,可以很輕鬆的通過itempipline去入庫。

像多爬蟲這個東西,我也是參考一些大牛發的部落格,文件什麼的,是通過建立commands目錄來實現多爬蟲爬取。

廢話不多說,我們建立commands目錄的時候必須注意commands和spiders目錄是同級的,在commands下面新增乙個檔案crawlall.py,裡面的內容都是固定的。crawl的原始碼可以在此檢視:

步驟就是:

1、mkdir commands

2、commands建立檔案crawlall.py,把原始碼複製貼上過去

3、不要忘記建立乙個_init_檔案,這個如果忘了的話也是不行的

4、settings.py目錄下建立setup.py,這一步我並沒有做,但是好多都說需要寫上這一步,我就在這新增上吧。

附上裡面的**

from setuptools import setup, find_packages

setup(name='scrapy-mymodule',

entry_points=,

)

這個檔案的含義是定義了乙個crawlall命令,cnblogs.commands為命令檔案目錄,crawlall為命令名。

5. 在settings.py中新增配置:

commands_module = 'cnblogs.commands'
這個千萬不能忘,settings畢竟掌控著各大檔案

然後我們執行**的時候可以建立乙個run.py,附上我的run檔案的**

# coding:utf-8

from scrapy import cmdline

import sys,os

if __name__=="__main__":

cmdline.execute(['scrapy','crawlall'])

執行的時候我們只需要執行run.py所有的spider就會跑起來了。

因為檔案比較多,所以這時候我們需要在settings下面新增

concurrent_requests
提高併發數,其實像一些io密集型什麼的我也不是特別理解,也不能跟大家解釋了,還有就是把timeout設定的小一些,我當時設定的是30

download_timeout=30
配置完這些基本上在速度方面上還是可以的,如果還有更好的方法可以隨時給我提,這也只是我的一些理解,如果有不對的地方可以說出來,會及時更正。

Scrapy爬蟲爬取電影天堂

目標 建立專案 scrapy startproject 爬蟲專案檔案的名字 生成 crawlspider 命令 scrapy genspider t crawl 爬蟲名字 爬蟲網域名稱 終端執行 scrapy crawl 爬蟲的名字 python操作mysql資料庫操作 爬蟲檔案 coding ut...

Scrapy實現多頁的爬取

1 scrapy實現多頁的爬取 多頁爬取的思路 1,在start urls中構建url的列表。逐一請求 2,定義乙個page屬性,利用if判斷來實現多頁 2 深度爬取 1,深度爬取 從列表頁到詳情頁,甚至是更後續的頁面的資料的獲取 2,深度爬蟲 通常我們要爬取的資料隱藏在form表單之後,需要越過表...

爬蟲 爬取多頁資料

最近在寫乙個簡單的爬蟲,最開始使用的是bs4工具,但是後面接觸到xpath,覺得這個比較適合我哈哈.然後用xpath又重新寫了一遍,其中讓我困擾的還是多頁爬取,ip老是被封.網上找了很多方法,大多數都是說要建立乙個ip池,迴圈爬取多頁資料的時候,就換ip這樣就不會被封了.然後 ip有兩種,乙個要付費...