主頁 > 知識庫 > 一文讀懂python Scrapy爬蟲框架

一文讀懂python Scrapy爬蟲框架

熱門標簽:外呼系統(tǒng)前面有錄音播放嗎 申請辦個400電話號碼 千呼ai電話機器人免費 400電話辦理費用收費 柳州正規(guī)電銷機器人收費 騰訊地圖標注有什么版本 高德地圖標注字母 深圳網(wǎng)絡外呼系統(tǒng)代理商 鎮(zhèn)江人工外呼系統(tǒng)供應商

Scrapy是什么?

先看官網(wǎng)上的說明,http://scrapy-chs.readthedocs.io/zh_CN/latest/intro/overview.html

Scrapy是一個為了爬取網(wǎng)站數(shù)據(jù),提取結構性數(shù)據(jù)而編寫的應用框架??梢詰迷诎〝?shù)據(jù)挖掘,信息處理或存儲歷史數(shù)據(jù)等一系列的程序中。

其最初是為了頁面抓取 (更確切來說, 網(wǎng)絡抓取 )所設計的, 也可以應用在獲取API所返回的數(shù)據(jù)(例如 Amazon Associates Web Services ) 或者通用的網(wǎng)絡爬蟲。

Scrapy是一個非常好用的爬蟲框架,它不僅提供了一些開箱即用的基礎組件,還提供了強大的自定義功能。

# Scrapy 安裝

Scrapy 官網(wǎng):https://scrapy.org/

各位同學的電腦環(huán)境應該和小編的相差不遠(如果是使用 win10 的話) 安裝過程需要10分鐘左右

安裝命令:

pip install scrapy

由于 Scrapy 依賴了大量的第三方的包,所以在執(zhí)行上面的命令后并不會馬上就下載 Scrapy ,而是會先不斷的下載第三方包,包括并不限于以下幾種:

  • pyOpenSSL:Python 用于支持 SSL(Security Socket Layer)的包。
  • cryptography:Python 用于加密的庫。
  • CFFI:Python 用于調用 C 的接口庫。
  • zope.interface:為 Python 缺少接口而提供擴展的庫。
  • lxml:一個處理 XML、HTML 文檔的庫,比 Python 內置的 xml 模塊更好用。
  • cssselect:Python 用于處理 CSS 選擇器的擴展包。
  • Twisted:為 Python 提供的基于事件驅動的網(wǎng)絡引擎包。
  • ……

如果安裝不成功多試兩次 或者 執(zhí)行pip install --upgrade pip 后再執(zhí)行 pip install scrapy

等待命令執(zhí)行完成后,直接輸入 scrapy 進行驗證。

C:\Users\Administrator>scrapy
Scrapy 2.4.0 - no active project
Available commands:
bench   Run quick benchmark test
...

版本號可能會有差別,不用太在意

如果能正常出現(xiàn)以上內容,說明我們已經(jīng)安裝成功了。

理論上 Scrapy 安裝出現(xiàn)各種問題才算正常情況

三、Scrapy創(chuàng)建項目

Scrapy 提供了一個命令來創(chuàng)建項目 scrapy 命令,在命令行上運行:

scrapy startproject jianshu

我們創(chuàng)建一個項目jianshu用來爬取簡書首頁熱門文章的所有信息。

jianshu/
 scrapy.cfg
 jianshu/
  __init__.py
  items.py
  pipelines.py
  settings.py
  spiders/
   __init__.py
   ...

spiders文件夾下就是你要實現(xiàn)爬蟲功能(具體如何爬取數(shù)據(jù)的代碼),爬蟲的核心。在spiders文件夾下自己創(chuàng)建一個spider,用于爬取簡書首頁熱門文章。

scrapy.cfg是項目的配置文件。

settings.py用于設置請求的參數(shù),使用代理,爬取數(shù)據(jù)后文件保存等。

items.py 自己預計需要爬取的內容

middlewares.py自定義中間件的文件

pipelines.py 管道,保持數(shù)據(jù)

項目的目錄就用網(wǎng)圖來展示一下吧

image Scrapy爬取簡書首頁熱門文章

cd到Jianshu項目中,生成一個爬蟲:

scrapy genspider jianshublog www.jianshu.com

這種方式生成的是常規(guī)爬蟲

1)新建jianshuSpider

import scrapy
class JianshublogSpider(scrapy.Spider):
 name = 'jianshublog'
 allowed_domains = ['www.jianshu.com']
 start_urls = ['http://www.jianshu.com/']
 
 def parse(self, response):
  pass

可以看到,這個類里面有三個屬性 nameallowed_domains 、 start_urls 和一個parse()方法。

name,它是每個項目唯一的名字,用來區(qū)分不同的 Spider。

allowed_domains,它是允許爬取的域名,如果初始或后續(xù)的請求鏈接不是這個域名下的,則請求鏈接會被過濾掉。
start_urls,它包含了 Spider 在啟動時爬取的 url 列表,初始請求是由它來定義的。

parse,它是 Spider 的一個方法。默認情況下,被調用時 start_urls 里面的鏈接構成的請求完成下載執(zhí)行后,返回的響應就會作為唯一的參數(shù)傳遞給這個函數(shù)。該方法負責解析返回的響應、提取數(shù)據(jù)或者進一步生成要處理的請求。

到這里我們就清楚了,parse() 方法中的 response 是前面的 start_urls中鏈接的爬取結果,所以在 parse() 方法中,我們可以直接對爬取的結果進行解析。

修改USER_AGENT

打開settings.py 添加 UA 頭信息

USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3493.3 Safari/537.36'

修改`parse`方法解析網(wǎng)頁

我們打開簡書首頁  右鍵檢查(ctrl+shift+I)發(fā)現(xiàn)所有的博客頭條都放在類名.note-list .content 的div 節(jié)點里面

修改jianshublog.py代碼如下

jianshublog.py

import scrapy
 
class JianshublogSpider(scrapy.Spider):
 name = 'jianshublog'
 allowed_domains = ['www.jianshu.com']
 start_urls = ['http://www.jianshu.com/']
 
 def parse(self, response):
  blogs = response.css('.note-list .content')
  # 獲取博客列表
  for blog in blogs: # 遍歷博客列表
   title = blog.css('.title::text').extract_first() # 提取標題
   link = blog.css('.title::attr(href)').extract_first() # 提取鏈接
   nickname = blog.css('.nickname::text').extract_first() # 提作者
   print("標題:",title) # 打印標題
   # print("鏈接:", link)
   # print("作者:", nickname)

最后別忘了執(zhí)行爬蟲命令

scrapy crawl jianshublog

整個項目就完成啦

下一講我們把文章數(shù)據(jù)爬取出來,存儲在csv文件里面

到此這篇關于一文讀懂python Scrapy爬蟲框架的文章就介紹到這了,更多相關python Scrapy爬蟲框架內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python Scrapy爬蟲框架的使用
  • Python3環(huán)境安裝Scrapy爬蟲框架過程及常見錯誤
  • Python使用Scrapy爬蟲框架全站爬取圖片并保存本地的實現(xiàn)代碼
  • Python之Scrapy爬蟲框架安裝及使用詳解
  • python實戰(zhàn)之Scrapy框架爬蟲爬取微博熱搜

標簽:海南 哈爾濱 烏蘭察布 平頂山 合肥 大慶 郴州 烏蘭察布

巨人網(wǎng)絡通訊聲明:本文標題《一文讀懂python Scrapy爬蟲框架》,本文關鍵詞  一文,讀懂,python,Scrapy,爬蟲,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《一文讀懂python Scrapy爬蟲框架》相關的同類信息!
  • 本頁收集關于一文讀懂python Scrapy爬蟲框架的相關信息資訊供網(wǎng)民參考!
  • 推薦文章