Scrapy爬蟲——創建第一個爬蟲

一、演示的HTML頁面

URL:http://python123.io/ws/demo.html

內容:

二、產生步驟

步驟1:建立一個Scrapy爬蟲工程

            桌面存在空文件夾Scrapy,cmd進入到Desktop\Scrapy

            輸入“scrapy startproject python123demo”創建項目,名爲python123demo。

           

            創建後的文件夾內容:

           

            其中,scrapy.cfg:部署Scrapy爬蟲的配置文件,不需要用戶修改

                       python123demo:框架的用戶自定義Python代碼

            python123demo文件夾中的內容:

           

              其中,_init_.py:初始化腳本,用戶不需要編寫

                         items.py:Items代碼模板(繼承類),一般不需要用戶編寫

                         middlewares.py:Middlewares代碼模板(繼承類),若用戶需要擴展中間件功能,則編寫

                         pipelines.py:Pipelines代碼模板(繼承類)

                         settings.py:Scrapy爬蟲的配置文件,若要優化爬蟲功能,則修改相應的配置項

                         spiders:Scrapy代碼模板目錄(繼承類)

              spiders文件中的內容:

              

              其中,__init__.py:初始文件,無需修改

                         __pycache__:緩存目錄,無需修改

步驟2:在工程中產生一個Scrapy爬蟲

               進入工程目錄,輸入命令:scrapy genspider demo python123.io產生爬蟲

               

               結果:在spiders文件夾下,產生了一個demo.py

              

                注意:上述命令作用僅限於生成demo.py,也就是說,也可以手動生成demo.py

               demo.py文件內容:

               

               name = 'demo'  #名字

               allowed_domains = ['python123.io']  #給的域名,只能爬取本域名以下的內容

               start_urls = ['http://python123.io/']  #列表中的N個URL,就是爬取的N個初始頁面

               parse():用於處理響應,解析內容形成字典,發現新的URL爬取請求。

步驟3:配置產生的spider爬蟲

               用戶修改demo.py,使之能訪問URL,並爬取相應的內容。

               本項目將返回的HTML頁面存成文件

# -*- coding: utf-8 -*-
import scrapy


class DemoSpider(scrapy.Spider):
    name = 'demo'  #名字
    #allowed_domains = ['python123.io']  #給的域名,只能爬取本域名以下的內容
    start_urls = ['http://python123.io/ws/demo.html']  #列表中的N個URL,就是爬取的N個初始頁面

    def parse(self, response): #將返回對象response的內容,寫到HTML文件中
        fname=response.url.split('/')[-1]  #提取的是文件名字demo.html
        with open(fname,'wb') as f:
        	f.write(response.body)
        sel .log('Saved file %s.'%name)  #日誌

            輸入“scrapy crawl demo”,運行爬蟲

           

             結果:在工程目錄下,產生一個demo.html網頁文件 

           

三、完整版本代碼

將下述代碼升級

升級前:

 name = 'demo'  #名字
 start_urls = ['http://python123.io/ws/demo.html']  #列表中的N個URL,就是爬取的N個初始頁面

升級後:

name = 'demo'  #名字
    
    def start_requests(self):
    	urls=[
              'http://python123.io/ws/demo.html'
    	     ]
    	for url in urls:
    		yield scrapy.Request(url=url,callback=self.parse)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章