Scrapy使用入門及爬蟲代理配置
本文通過一個簡單的專案實現Scrapy採集流程。希望通過該專案對Scrapy的使用方法和框架能夠有幫助。
1. 工作流程
重點流程如下:
- 建立一個Scrapy專案。
- 建立一個爬蟲來抓取網站和處理資料。
- 通過命令列將採集的內容進行分析。
- 將分析的資料儲存到MongoDB資料庫。
2. 準備環境
安裝好Scrapy框架,MongoDB的和PyMongo庫。
3. 爬蟲專案實現
(1)建立一個Scrapy專案,檔案專案可以直接用
scrapy
命令生成,命令如下所示:
scrapy startproject教程複製程式碼
(2)爬蟲是自己定義的類,Scrapy通過該類從網頁裡採集內容分析資料的結果。不過這個類必須繼承Scrapy提供的蜘蛛類
scrapy.Spider
,還要定義爬蟲的名稱和起始請求,以及怎樣處理爬取後的資料。
也可以使用命令列建立一個蜘蛛比如要生成行情這個蜘蛛,可以執行如下命令:
光碟教程scrapy genspider報價複製程式碼
進入剛才建立的教程資料夾,執行然後
genspider
命令。第一個引數是爬蟲的名稱,第二個引數是網站域名。執行完畢之後,蜘蛛資料夾中多了一個quotes.py,它就是剛剛建立的蜘蛛,內容如下所示:
import scrapy class QuotesSpider (scrapy.Spider): name = “quotes” allowed_domains = [ “quotes.toscrape.com” ] start_urls = [ 'http://quotes.toscrape.com/' ] def parse (self,response): 通過複製程式碼
(3)採集過程中,目標網站會限制爬蟲的請求訪問頻率,必須使用爬蟲代理
在專案中新建middlewares.py檔案(./專案名/middlewares.py)
#! -*- encoding:utf-8 -*- import base64 import sys import random PY3 = sys.version_info[0] >= 3 def base64ify(bytes_or_str): if PY3 and isinstance(bytes_or_str, str): input_bytes = bytes_or_str.encode('utf8') else: input_bytes = bytes_or_str output_bytes = base64.urlsafe_b64encode(input_bytes) if PY3: return output_bytes.decode('ascii') else: return output_bytes class ProxyMiddleware(object): def process_request(self, request, spider): # 代理伺服器(產品官網 www.16yun.cn) proxyHost = "t.16yun.cn" proxyPort = "31111" # 代理驗證資訊 proxyUser = "username" proxyPass = "password" request.meta['proxy'] = "http://{0}:{1}".format(proxyHost,proxyPort) # 新增驗證頭 encoded_user_pass = base64ify(proxyUser + ":" + proxyPass) request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass # 設定IP切換頭(根據需求) tunnel = random.randint(1,10000) request.headers['Proxy-Tunnel'] = str(tunnel)
修改專案配置檔案 (./專案名/settings.py)
DOWNLOADER_MIDDLEWARES = { '專案名.middlewares.ProxyMiddleware': 100, }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31522063/viewspace-2733501/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- scrapy爬蟲代理池爬蟲
- Windows下安裝配置爬蟲工具Scrapy及爬蟲環境Windows爬蟲
- scrapy入門教程()部署爬蟲專案爬蟲
- Python網路爬蟲4 - scrapy入門Python爬蟲
- Scrapy爬蟲框架如何使用代理進行採集爬蟲框架
- Scrapy入門-第一個爬蟲專案爬蟲
- python爬蟲利器 scrapy和scrapy-redis 詳解一 入門demo及內容解析Python爬蟲Redis
- 爬蟲框架-scrapy的使用爬蟲框架
- Scrapy爬蟲框架的使用爬蟲框架
- Scrapy框架的使用之Scrapy通用爬蟲框架爬蟲
- 爬蟲代理 Scrapy 框架詳細介紹 2爬蟲框架
- 爬蟲--Scrapy簡易爬蟲爬蟲
- python網路爬蟲(14)使用Scrapy搭建爬蟲框架Python爬蟲框架
- 手把手教你寫網路爬蟲(4):Scrapy入門爬蟲
- 萬能除錯 | Python爬蟲Scrapy框架HTTP代理的配置與除錯除錯Python爬蟲框架HTTP
- Scrapy爬蟲-草稿爬蟲
- Scrapy爬蟲框架爬蟲框架
- Python爬蟲 ---scrapy框架初探及實戰Python爬蟲框架
- 爬蟲入門爬蟲
- 為什麼學習python及爬蟲,Python爬蟲[入門篇]?Python爬蟲
- 爬蟲(9) - Scrapy框架(1) | Scrapy 非同步網路爬蟲框架爬蟲框架非同步
- Python Scrapy 爬蟲(二):scrapy 初試Python爬蟲
- python爬蟲Scrapy框架Python爬蟲框架
- 爬蟲實戰scrapy爬蟲
- Python爬蟲—Scrapy框架Python爬蟲框架
- 【Python篇】scrapy爬蟲Python爬蟲
- python爬蟲學習筆記 4.2 (Scrapy入門案例(建立專案))Python爬蟲筆記
- 爬蟲使用代理是否安全爬蟲
- Python爬蟲入門Python爬蟲
- Scrapy框架的使用之Scrapy入門框架
- scrapy之分散式爬蟲scrapy-redis分散式爬蟲Redis
- Python爬蟲入門教程 33-100 《海王》評論資料抓取 scrapyPython爬蟲
- scrapy + mogoDB 網站爬蟲Go網站爬蟲
- 為什麼使用Scrapy框架來寫爬蟲?框架爬蟲
- Python爬蟲 --- 2.3 Scrapy 框架的簡單使用Python爬蟲框架
- Python爬蟲教程-33-scrapy shell 的使用Python爬蟲
- 爬蟲使用代理防封IP爬蟲
- 爬蟲如何使用ip代理池爬蟲