scrapy安裝過程問題解決、新建項目、調試斷點

1、安裝問題

1. 下載速度太慢

  使用國外源,下載速度很慢,能夠考慮使用豆瓣的鏡像下載shell

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

 2. 安裝scrapy須要Microsoft Visual C++ 14.0 支持

  在下面下載在線安裝(可能須要半個小時以上,好幾個G),注意安裝時選擇自定義安裝,默認好像是win8.1,記得改成win10的app

Download the Visual C++ Build Tools (standalone C++ compiler, libraries and tools)scrapy

 

2、新建scrapy項目

  1. cmd新建項目

(SCRAPY~1) F:\Python Script\Scrapy>scrapy startproject ArticleSpider

 

  新建完後,就會生成項目,下面這個是Pycharm界面,怎麼進入這個界面呢?File->Open 而後選擇建立的項目文件夾 ArticleSpideride

 

  2. 建立初始模板

  建立模板以前,要cd進入項目fetch

(SCRAPY~1) F:\Python Script\Scrapy>cd ArticleSpider

(SCRAPY~1) F:\Python Script\Scrapy\ArticleSpider>scrapy genspider jobbole blog.jobbole.com

 

  #jobbole 是咱們的爬蟲名ui

  #blog.jobbole.com 是咱們爬蟲開始的頁面url

 

 打開看一下,裏面的代碼spa

 

  3. 選擇開發環境

  咱們打開項目後,尚未選擇咱們的開發環境.net

  -1. File->Setting,操做如圖,選擇咱們以前搭建的Python3.5虛擬環境:scrapy_py3調試

  4. 嘗試運行爬蟲

運行前,先安裝pypiwin32

 

(SCRAPY~1) F:\Python Script\Scrapy\ArticleSpider>pip install -i https://pypi.douban.com/simple/ pypiwin32

  

運行  

(SCRAPY~1) F:\Python Script\Scrapy\ArticleSpider>scrapy crawl jobbole

 

 

   5. 改配置

  在setting.py裏改下配置

 

 

   6. 調試

  調試斷點的簡單說明,看這裏:PyCharm 教程(五)斷點 調試

  繼續調試快捷鍵是,F8

  因爲pycharm沒有scrapy的模板,因此是沒辦法調試的,可是咱們經過自定義一個main文件,來調試

#main.py

#coding:utf-8

from scrapy.cmdline import execute
import os,sys

sys.path.append(os.path.dirname(os.path.abspath(__file__)))

execute(['scrapy','crawl','jobbole'])

 

在jobbole.py設置斷點

 

點下右上角的甲蟲圖標,或者快捷鍵Shift+F9 ,調試main.py

調試完成後會自動跳到jobbole.py文件的斷點處。

咱們能夠查看下變量信息

看看,response裏的變量

 

   7. scrapy shell 調試

  在虛擬環境中venv,進入scrapy項目所在的目錄

(SCRAPY~1) F:\Python Script\Scrapy\ArticleSpider>

  鍵入以下命令,進入scrapy shell環境

(SCRAPY~1) F:\Python Script\Scrapy\ArticleSpider>scrapy shell http://blog.jobbole.com/111121/

 

   後面的url,看你要調試哪一個網址,就填哪一個

  進入後,就能夠發現有這麼多變量可使用了,這裏咱們主要關注response

  利用scrapy shell帶上User-Agent

scrapy shell -s USER_AGENT:'拷貝進來' https://www.zhihu.com

   scrapy增長表頭

$ scrapy shell
...
...
>>> from scrapy import Request
>>> req = Request('yoururl.com', headers={"header1":"value1"})
>>> fetch(req)
相關文章
相關標籤/搜索