1. 程式人生 > 其它 >scrapy的安裝,scrapy建立專案

scrapy的安裝,scrapy建立專案

簡要:


scrapy的安裝

# 1)pip install scrapy-i https://pypi.douban.com/simple(國內源)

一步到位

# 2) 報錯1: building 'twisted.test.raiser' extension
  # error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++
  # Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools
# 解決1
  #http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
  # Twisted‑20.3.0‑cp37‑cp37m‑win_amd64.whl
  # cp是你的python版本
  # amd是你的作業系統的版本

  # 下載完成之後 使用pip install twisted的路徑 安裝

  # 切記安裝完twisted 再次安裝scrapy

  pip install scrapy-i https://pypi.douban.com/simple

# 3) 報錯2:提示python -m pip install --upgrade pip
  # 解決2 執行python -m pip install --upgrade pip

# 4) 報錯3 win32的錯誤
  # 解決3pip install pypiwin32

# 5)使用 anaconda

scrapy建立專案

  cmd 到專案資料夾中

  或者直接拖入

如果返回沒有許可權,使用管理員執行cmd

1.建立scrapy專案:   終端輸入scrapy startproject專案名稱

scrapy startproject scrapy_baidu

scrapy_baidu\下的資料夾

2.專案組成:   spiders     __init__.py     自定義的爬蟲檔案.py —>由我們自己建立,是實現爬蟲核心功能的檔案   __init__.py   items.py —>定義資料結構的地方,是一個繼承自scrapy.Item的類   middlewares.py —>中介軟體 代理   pipelines.py —>管道檔案,裡面只有一個類,用於處理下載資料的後續處理     預設是300優先順序,值越小優先順序越高(1‐1000)   settings.py —>配置檔案 比如:是否遵守robots協議,User‐Agent定義等 3.建立爬蟲檔案:     1)跳轉到spiders資料夾 cd 目錄名字/目錄名字/spiders     2)scrapy genspider 爬蟲名字 網頁的域名   爬蟲檔案的基本組成:     繼承scrapy.Spider類       name = 'baidu' —> 執行爬蟲檔案時使用的名字       allowed_domains —> 爬蟲允許的域名,在爬取的時候,如果不是此域名之下的   url,會被過濾掉       start_urls —> 聲明瞭爬蟲的起始地址,可以寫多個url,一般是一個       parse(self, response) —> 解析資料的回撥函式         response.text —> 響應的是字串         response.body —> 響應的是二進位制檔案         response.xpath()—> xpath方法的返回值型別是selector列表         extract() —> 提取的是selector物件的是data         extract_first() —> 提取的是selector列表中的第一個資料 4.執行爬蟲檔案:scrapy crawl baidu
  scrapy crawl 爬蟲名稱   注意:應在spiders資料夾內執行

settings.py

spiders\baidu.py

import scrapy

class BaiduSpider(scrapy.Spider):
    # 爬蟲的名字  用於執行爬蟲的時候 使用的值
    name = 'baidu'
    # 允許訪問的域名
    allowed_domains = ['http://www.baidu.com']
    # 起始的url地址  指的是第一次要訪問的域名
    # start_urls 是在allowed_domains的前面新增一個http://
    #             在 allowed_domains的後面新增一個/
    start_urls = ['http://www.baidu.com/']

    # 是執行了start_urls之後 執行的方法   方法中的response 就是返回的那個物件
    # 相當於 response = urllib.request.urlopen()
    #       response  = requests.get()
    def parse(self, response):
        print('你好世界')