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)
相关文章
相关标签/搜索