欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文讀懂python Scrapy爬蟲(chóng)框架

 更新時(shí)間:2021年02月24日 09:44:49   作者:曾親桂林  
這篇文章主要介紹了一文讀懂python Scrapy爬蟲(chóng)框架的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

Scrapy是什么?

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

Scrapy是一個(gè)為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫(xiě)的應(yīng)用框架。可以應(yīng)用在包括數(shù)據(jù)挖掘,信息處理或存儲(chǔ)歷史數(shù)據(jù)等一系列的程序中。

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

Scrapy是一個(gè)非常好用的爬蟲(chóng)框架,它不僅提供了一些開(kāi)箱即用的基礎(chǔ)組件,還提供了強(qiáng)大的自定義功能。

# Scrapy 安裝

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

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

安裝命令:

pip install scrapy

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

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

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

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

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

版本號(hào)可能會(huì)有差別,不用太在意

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

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

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

Scrapy 提供了一個(gè)命令來(lái)創(chuàng)建項(xiàng)目 scrapy 命令,在命令行上運(yùn)行:

scrapy startproject jianshu

我們創(chuàng)建一個(gè)項(xiàng)目jianshu用來(lái)爬取簡(jiǎn)書(shū)首頁(yè)熱門文章的所有信息。

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

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

scrapy.cfg是項(xiàng)目的配置文件。

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

items.py 自己預(yù)計(jì)需要爬取的內(nèi)容

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

pipelines.py 管道,保持?jǐn)?shù)據(jù)

項(xiàng)目的目錄就用網(wǎng)圖來(lái)展示一下吧

image Scrapy爬取簡(jiǎn)書(shū)首頁(yè)熱門文章

cd到Jianshu項(xiàng)目中,生成一個(gè)爬蟲(chóng):

scrapy genspider jianshublog www.jianshu.com

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

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

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

name,它是每個(gè)項(xiàng)目唯一的名字,用來(lái)區(qū)分不同的 Spider。

allowed_domains,它是允許爬取的域名,如果初始或后續(xù)的請(qǐng)求鏈接不是這個(gè)域名下的,則請(qǐng)求鏈接會(huì)被過(guò)濾掉。
start_urls,它包含了 Spider 在啟動(dòng)時(shí)爬取的 url 列表,初始請(qǐng)求是由它來(lái)定義的。

parse,它是 Spider 的一個(gè)方法。默認(rèn)情況下,被調(diào)用時(shí) start_urls 里面的鏈接構(gòu)成的請(qǐng)求完成下載執(zhí)行后,返回的響應(yīng)就會(huì)作為唯一的參數(shù)傳遞給這個(gè)函數(shù)。該方法負(fù)責(zé)解析返回的響應(yīng)、提取數(shù)據(jù)或者進(jìn)一步生成要處理的請(qǐng)求。

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

修改USER_AGENT

打開(kāi)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)頁(yè)

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

修改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() # 提取標(biāo)題
   link = blog.css('.title::attr(href)').extract_first() # 提取鏈接
   nickname = blog.css('.nickname::text').extract_first() # 提作者
   print("標(biāo)題:",title) # 打印標(biāo)題
   # print("鏈接:", link)
   # print("作者:", nickname)

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

scrapy crawl jianshublog

整個(gè)項(xiàng)目就完成啦

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

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

相關(guān)文章

  • 用Python復(fù)現(xiàn)二戰(zhàn)德軍enigma密碼機(jī)

    用Python復(fù)現(xiàn)二戰(zhàn)德軍enigma密碼機(jī)

    大家好,本篇文章主要講的是用Python復(fù)現(xiàn)二戰(zhàn)德軍enigma密碼機(jī),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • django如何連接已存在數(shù)據(jù)的數(shù)據(jù)庫(kù)

    django如何連接已存在數(shù)據(jù)的數(shù)據(jù)庫(kù)

    這篇文章主要給大家介紹了關(guān)于django如何連接已存在數(shù)據(jù)的數(shù)據(jù)庫(kù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用django具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • 利用Python做一個(gè)電腦通知小工具

    利用Python做一個(gè)電腦通知小工具

    Windows不是有個(gè)消息通知功能,挺喜歡這個(gè)功能的,但是不太方便使用,也懶得去研究,于是準(zhǔn)備用Python自己寫(xiě)一個(gè),感興趣的可以了解一下
    2022-12-12
  • python 如何將數(shù)據(jù)寫(xiě)入本地txt文本文件的實(shí)現(xiàn)方法

    python 如何將數(shù)據(jù)寫(xiě)入本地txt文本文件的實(shí)現(xiàn)方法

    這篇文章主要介紹了python 如何將數(shù)據(jù)寫(xiě)入本地txt文本文件的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • python判斷給定的字符串是否是有效日期的方法

    python判斷給定的字符串是否是有效日期的方法

    這篇文章主要介紹了python判斷給定的字符串是否是有效日期的方法,涉及Python針對(duì)字符串與日期操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • redis之django-redis的簡(jiǎn)單緩存使用

    redis之django-redis的簡(jiǎn)單緩存使用

    本篇文章介紹了redis之django-redis的簡(jiǎn)單緩存使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • django框架如何集成celery進(jìn)行開(kāi)發(fā)

    django框架如何集成celery進(jìn)行開(kāi)發(fā)

    本文給大家詳細(xì)講解了在django框架中如何集成celery進(jìn)行開(kāi)發(fā),步驟非常詳細(xì),有需要的小伙伴可以參考下
    2017-05-05
  • Python整型運(yùn)算之布爾型、標(biāo)準(zhǔn)整型、長(zhǎng)整型操作示例

    Python整型運(yùn)算之布爾型、標(biāo)準(zhǔn)整型、長(zhǎng)整型操作示例

    這篇文章主要介紹了Python整型運(yùn)算之布爾型、標(biāo)準(zhǔn)整型、長(zhǎng)整型操作,結(jié)合具體實(shí)例形式分析了Python中布爾型、標(biāo)準(zhǔn)整型、長(zhǎng)整型等相關(guān)運(yùn)算技巧,代碼備有詳盡注釋,需要的朋友可以參考下
    2017-07-07
  • Python+Turtle實(shí)現(xiàn)繪制可愛(ài)的小倉(cāng)鼠

    Python+Turtle實(shí)現(xiàn)繪制可愛(ài)的小倉(cāng)鼠

    肉嘟嘟的小動(dòng)物很是可愛(ài),這篇文章主要為大家介紹一下如何運(yùn)用Python中的turtle庫(kù)控制函數(shù)繪制小倉(cāng)鼠,文中的實(shí)現(xiàn)方法講解詳細(xì),感興趣的可以嘗試一下
    2022-10-10
  • Python代碼使用 Pyftpdlib實(shí)現(xiàn)FTP服務(wù)器功能

    Python代碼使用 Pyftpdlib實(shí)現(xiàn)FTP服務(wù)器功能

    FTP 服務(wù)器,在此之前我都是使用Linux的vsftpd軟件包來(lái)搭建FTP服務(wù)器的,現(xiàn)在發(fā)現(xiàn)了利用pyftpdlib可以更加簡(jiǎn)單的方法即可實(shí)現(xiàn)FTP服務(wù)器的功能 ,需要的朋友可以參考下
    2019-07-07

最新評(píng)論