一、手动创建scrapy项目
----------------

  安装scrapy:

  pip install -i https://pypi.douban.com/simple/  scrapy
    1、创建项目
        (article_spider) E:\PyCharmWorkspace>scrapy startproject ArticleSpider(项目名称)
        此时只是利用现有模板创建了scrapy项目,但是没有spider
    2、pycharm导入项目
        1、open
        2、配置解释器
            file->setting->project interpreater-选择你创建的虚拟环境下script-python.exe
        3、创建spider
            1)进入项目目录下
                (article_spider) E:\PyCharmWorkspace>cd ArticleSpider
            2)创建spider
                (article_spider)E:\PyCharmWorkspace\ArticleSpider>scrapy genspider jobbole(spider的名字) blog.jobbole.com(域名)
                idea中spider目录下就会出现对应的py文件
        4、为了可以调试scrapy,创建main文件

    以后想debug的时候,直接debug该main文件即可。原理是在scrapy中调用spider(命令是scrapy crawl jobbole)

from scrapy.cmdline import execute
import sys
import os
#os.path.abspath(__file__)获取当前py文件的路径
#os.path.dirname(),获得参数文件所在文件夹的路径,即父目录
#__file__指当前py文件
print (os.path.abspath(__file__))
#在工程目录os.path.dirname(os.path.abspath(__file__))下执行命令行才有效
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
#scrapy中启动spider项目:在命令行用scrapy crawl jobbole命令
execute(["scrapy","crawl","jobbole"])

5】、cmd执行spider命令
            命令:scrapy crawl jobbole
            错误:ImportError: No module named 'win32api'
            解决:pip install -i https://pypi.douban.com/simple pypiwin32
        6、修改seeting.py(必须改)
            ROBOTSTXT_OBEY = False 将true改为false
            若为true会自动过滤掉不符合ROBOTS规则的url
        7】、

    在jobbole.py中:
            执行完spider(scrapy crawl jobbole)后会有如下操作:
            下载start_urls = ['http://blog.jobbole.com/']该url的页面,返回一个response
            def parse(self, response):

二、基础知识
----------

  0、

  scrapy获得的是右击页面->查看页面源代码

    右击页面->检查,的代码是运行完js之后的,并不是scrapy要爬取的
        1、css选择器
        ----------

       *     选择所有节点
#container 选择id为container的节点
.container 选择所有class包含container的节点
li a 选取所有li下的所有a节点
ul + p 选择ul后面的第一个p元素(互为兄弟节点)
div#container > ul 选取id为container的div的第一个ul子元素       

2、技巧
        --------

    1)如何快速得到css地址

      chrome 右击你要定位的元素,选择copy->copy selector 即可    

    2)
           每次启动scrapy都比较慢,每调试一次都需要启动scrapy. shell脚本调试
           在虚拟环境下,cmd命令,执行scrapy shell http://blog.jobbole.com/112569/(对这个url进行调试),response可以调用:

3)

.strip():去除左右两边的空字符
   

爬虫学习笔记(2)--创建scrapy项目&&css选择器的更多相关文章

  1. springmvc学习笔记---idea创建springmvc项目

    前言: 真的是很久没搞java的web服务开发了, 最近一次搞还是读研的时候, 想来感慨万千. 英雄没落, Eclipse的盟主地位隐隐然有被IntelliJ IDEA超越的趋势. Spring从2. ...

  2. yii学习笔记--快速创建一个项目

    下载yii框架 下载地址:http://www.yiiframework.com/ 中文网站:http://www.yiichina.com/ 解压文件

  3. web前端学习(三)css学习笔记部分(4)-- CSS选择器详解

    4.  元素选择器详解 4.1  元素选择器 4.2  选择器分组 用英文逗号","相连,使用相同的样式表 使用通配符对所有元素进行通用设定. 4.3  类选择器详解 4.3.1. ...

  4. scrapy爬虫学习系列二:scrapy简单爬虫样例学习

    系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备:      http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...

  5. pycharm创建scrapy项目教程及遇到的坑

    最近学习scrapy爬虫框架,在使用pycharm安装scrapy类库及创建scrapy项目时花费了好长的时间,遇到各种坑,根据网上的各种教程,花费了一晚上的时间,终于成功,其中也踩了一些坑,现在整理 ...

  6. scrapy爬虫学习系列三:scrapy部署到scrapyhub上

    系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备:      http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...

  7. python网络爬虫学习笔记

    python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ...

  8. Django:学习笔记(2)——创建第一个应用

    Django:学习笔记(2)——创建第一个应用 创建应用 在 Django 中,每一个应用都是一个 Python 包,并且遵循着相同的约定.Django 自带一个工具,可以帮你生成应用的基础目录结构, ...

  9. Java学习笔记-多线程-创建线程的方式

    创建线程 创建线程的方式: 继承java.lang.Thread 实现java.lang.Runnable接口 所有的线程对象都是Thead及其子类的实例 每个线程完成一定的任务,其实就是一段顺序执行 ...

随机推荐

  1. Python内置函数之exec()

    exec(object[,gobals[,locals]])这个函数和eval()有相同的作用,用来做运算的. 区别是,exec()可以直接将运算结果赋值给变量对象,而eval()只能运算不能赋值. ...

  2. JS鼠标的拖拽原理

    拖拽功能主要是用在让用户做一些自定义的动作,比如拖动排序,弹出框拖动移动等等,效果还是蛮不错的.下面讲解一下拖拽的原理,希望可以帮助到有需要的朋友! 一.拖拽的流程动作①鼠标按下②鼠标移动③鼠标松开 ...

  3. centos IP 配置 和 克隆的centos解决上网问题

    1. vi /etc/sysconfig/network-scripts/ifcfg-eth0 2. DEVICE=eth1HWADDR=00:0C:29:D2:9A:F5TYPE=EthernetU ...

  4. raw flash vs FTL

    1. 区别 raw flash devices: NAND, NOR, OneNAND, etc,其被作为MTD设备处理(既不是字符设备,也不是块设备). FTL device:Flash Trans ...

  5. easy_UI datagrid view数据格式化

    从数据库中提取的信息,有时候需要后期处理一下,easy_ui给了我们很好的一个方法,根据easy_ui生成datagridview的两种方式,下面用两种方式来格式化显示数据信息 1,通过脚本生成的da ...

  6. Eclipse 菜单

    Eclipse 菜单 Eclipse 查看的菜单栏通常包含以下几个菜单: File 菜单 Edit 菜单 Navigate 菜单 Search 菜单 Project 菜单 Run 菜单 Window ...

  7. Codeforces 455A Boredom 取数字的dp

    题目链接:点击打开链接 给定一个n长的序列 删除x这个数就能获得x * x的个数 的分数,然后x+1和x-1这2个数会消失.即无法获得这2个数的分数 问最高得分. 先统计每一个数出现的次数.然后dp一 ...

  8. android中延迟执行某个任务

    android App开发在某些情况下需要有延时功能,比如说App首页显示定格3秒,然后自动跳到登录页的情况,这就好比是一个预加载,但是这个预加载可能瞬间就完成了,撑不到3秒钟,这是就要求你做延时处理 ...

  9. python3----转换大小写(upper lower capitalize and title)

    和其他语言一样,Python为string对象提供了转换大小写的方法:upper() 和 lower().还不止这些,Python还为我们提供了首字母大写,其余小写的capitalize()方法,以及 ...

  10. django使用redis做缓存

    Django 使用 Redis 做缓存 django中应用redis:pip3 install django-redis - 配置 CACHES = { "default": { ...