PyCharm下进行Scrapy项目的调试

PyCharm下进行Scrapy项目的调试,可以在爬虫项目的根目录创建一个main.py,然后在PyCharm设置下运行路径,那么就不用每次都在命令行运行代码,直接运行main.py就能启动爬虫了。

1、首先创建一个Scrapy项目:

在命令行输入:

scrapy startproject project_name

project_name为项目名称,比如我的项目名称为py_scrapyjobbole,生成的目录为:



2、创建新的Spider

在命令行输入:

scrapy genspider jobbole(spider名称) blog.jobbole.com(爬取的起始url)
# -*- coding: utf-8 -*-
import scrapy

class JobboleSpider(scrapy.Spider):
    name = 'jobbole'
    allowed_domains = ['blog.jobbole.com']
    start_urls = ['http://blog.jobbole.com/111322/']

    def parse(self, response):
        re_select = response.xpath('//*[@id="post-111322"]/div[1]/h1')
        pass


3、配置setting.py文件(这步很重要)

BOT_NAME = 'py_scrapyjobbole'

SPIDER_MODULES = ['py_scrapyjobbole.spiders']
NEWSPIDER_MODULE = 'py_scrapyjobbole.spiders'

# Crawl responsibly by identifying yourself (and your website) on the user-agent
# USER_AGENT = 'py_scrapyjobbole (+http://www.yourdomain.com)'

# Obey robots.txt rules
ROBOTSTXT_OBEY = False

ROBOTSTXT_OBEY = False一定要设置成 False,断点调试才能正常进行。



4、在工程目录下建立main.py文件,稍后将会在这里面进行调试!

from scrapy.cmdline import execute
import sys
import os

# 打断点调试py文件
# sys.path.append('D:\PyCharm\py_scrapyjobbole')
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
print(os.path.dirname(os.path.abspath(__file__)))
execute(['scrapy', 'crawl', 'jobbole'])


5、进行断点调试


附录

xpath相关知识

在用Scrapy进行数据爬取时可能会用到xpath相关知识,所以简单地展示一张图:

在这里面值得注意的是‘’/“和”//“的区别!

/:代表子元素,选取的元素必须是父子关系

//:代表所有后代元素,选取的元素不一定是父子关系,只要是后代元素即可

不过,大家要是觉得难的话,也可以利用chrome的元素查找功能进行xpath路径的复制:

时间: 2024-10-30 12:58:50

PyCharm下进行Scrapy项目的调试的相关文章

pycharm 下调试 scrapy

(1) 用pycharm导入scrapy项目 (2)选择自己编写的scrapy,run一下 (3)点击菜单栏的run ,选择Edit Configurations. (4)选择运行的spider文件 (5)在右侧script 输入你的cmdline.py 的地址,本人是 /usr/lib64/python2.7/site-packages/scrapy/cmdline.py.script parameters 输入 crawl **Spider,**Spider是你在spider中定义的 nam

net-用Visual Studio2012 做项目怎样调试这个项目啊 最好是快捷键那种调试

问题描述 用Visual Studio2012 做项目怎样调试这个项目啊 最好是快捷键那种调试 用Visual Studio2012 做项目怎样调试这个项目啊 最好是快捷键那种调试 解决方案 用断点调试啊,它有几个箭头,有往某个方法或者某个类里深入的,有往下执行代码的,你一行一行点击就可以了. 解决方案二: 谢谢 谢谢非常感谢各位 把错误调试出来了 解决方案三: 编译:F7:运行:F5:断点:F9:单步步过:F10:单步步入:F11等 这个百度一下应该就有了吧. 解决方案四: 全部调试 F5 单

Linux下快速部署项目

由于Linux和Java一样开源,所以现在在服务器的部署上基本上都是采用Linux平台作为服务器,然后部署项目!在开发项目的过程中,绝大部分程序猿还是使用最经典的windows操作系统,虽然Linux也有桌面化的系统,对于国人来说,还是不太习惯,并且国内的软件绝大部分都不支持Linux平台,所以在使用的频率那是相当的少! 在开发中,开发环境中编译使用等一系列通过后,还不能说功能已经ok,因为环境一旦变化,出现的问题的可能是自己没有考虑的,所以程序猿都知道真实的环境才是最可靠的,有时候出现的问题,

绑定日志-maven jetty 环境下的Web项目在使用logback slf4j时,slf4j总是绑定java.util.logging

问题描述 maven jetty 环境下的Web项目在使用logback slf4j时,slf4j总是绑定java.util.logging Logger logger = (Logger) LoggerFactory.getLogger(UserAction.class); logger.info("loginUser:username{},password{}",username,password); java.lang.ClassCastException: org.slf4j.

c语言-Linux下C语言项目,怎么基于不同宏值定义组合,自动化编译

问题描述 Linux下C语言项目,怎么基于不同宏值定义组合,自动化编译 一个Linux下的C语言项目,希望通过Macro实现每个功能模块都能自由打开/关闭,例如: #define FEATURE_A 1 // 如果想关闭Feature_A,请定义为0 #define FEATURE_B 1 // 如果想关闭Feature_B,请定义为0 #define FEATURE_C 1 // 如果想关闭Feature_C,请定义为0 默认情况下,Feature A/B/C都是打开的,也就是都定义为1.但是

Eclipse插件开发 获取Workspace下所有的项目

在开发Eclipse插件时候,发现需要获取到Workspace下所有的项目.决定通过ResourcePlugin来获取. 1.导入ResourcePlugin所在的Jar包org.eclipse.core.resources_3.8.101.v20130717-0806.jar进lib目录. 2.配置plugin.xml的Runtime选项卡,在Classpath中增加刚才在lib目录上加进来的jar包. 3.配置plugin.xml的Dependencies选项卡,另入依赖org.eclips

tomcat-windows下的web项目部署到linux下,报错了

问题描述 windows下的web项目部署到linux下,报错了 报500的错,谁知道是怎么回事啊 java.lang.reflect.InvocationTargetException sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.Delega

vs2013-VS2013下opencv环境配置,调试时一直报错,

问题描述 VS2013下opencv环境配置,调试时一直报错, 我把图片放到cpp格式的文件夹下,按F5,一直报错,就是下面几张图,求各位大神指点迷津 解决方案 图片路径是不是有问题,debug一下,有指针的地方记得判断是否为空,并打印日志 解决方案二: 你这个是指针异常了,你的代码读取图片等有问题,没有正确初始化

没有文件 目录 make-RedHat6.5下make一个项目的时候总是提示xxxx.h文件:没有那个文件或目录

问题描述 RedHat6.5下make一个项目的时候总是提示xxxx.h文件:没有那个文件或目录 RedHat6.5下make一个项目的时候总是提示xxxx.h文件:没有那个文件或目录.总工程是目录A,A下面有很多子目录比如B1,B2.B1下有个子目录C,就是在C下qmake -project,qmake,make.前两个什么都没有提示,make的时候就提示错误了.那些提示找不到的头文件在目录A和子目录B1的include里面都可以找到.将.h复制进去后,又有一堆.h找不到,盼解决! 解决方案