zoukankan      html  css  js  c++  java
  • 2017.07.26 Python网络爬虫之Scrapy爬虫框架

    1.windows下安装scrapy:cmd命令行下:cd到python的scripts目录,然后运行pip install 命令

    然后pycharmIDE下就有了Scrapy:

     在cmd下运行scrapy命令,出错!!!:

    解决方法:

    Python的Libsite-packages文件夹下新建一个sitecustomize.py:

    import sys sys.setdefaultencoding('gb2312')

    再次在cmd下运行scrapy,成功:

    2.Scrapy选择器和XPath和CSS:通过特定的XPath或者CSS表达式来选择HTML文件中的某个部分

    (1)XPath是一门用来在XML文件中选择节点的语言,也也可以用在HTML上,是一门在XML文档中查找信息的语言,XPath可以用来在XML文档中对元素和属性进行遍历。

    XPath含有超过100个内建的函数,这些函数用于字符串值,数值,日期和时间比较,节点和QName处理,序列处理,逻辑值等等

    (2)在XPath中,有7种类型的节点:元素,属性,文本,命名空间,处理指令,注释以及文档节点(或称为根节点)。XML文档是被作为节点树来对待的,树的根被称为文档节点或者根节点

    做个简单的XML文件:

    <superhero>
    <class>
    <name lang="en">Tony Stark </name>
    <alias>Iron Man </alias>
    <sex>male </sex>
    <birthday>1969 </birthday>
    <age>47 </age>
    </class>
    <class>
    <name lang="en">Peter Benjamin Parker </name>
    <alias>Spider Man </alias>
    <sex>male </sex>
    <birthday>unknow </birthday>
    <age>unknown </age>
    </class>
    <class>
    <name lang="en">Steven Rogers </name>
    <alias>Captain America </alias>
    <sex>male </sex>
    <birthday>19200704 </birthday>
    <age>96 </age>
    </class>
    </superhero>

    (3)XPath使用路径表达式在XML文档中选取节点:常用的路径表达式如下:

    nodeName:选取此节点的所有子节点

    /:从根节点选取

    //:从匹配选择的当前节点选择文档中的节点,不考虑它们的位置

    .:选取当前节点

    ..:选取当前节点的父节点
    @:选择属性

    *:匹配任何元素节点

    @*:匹配任何属性节点

    Node():匹配任何类型的节点

     (4)XPath选择器如何收集数据:

    (5)嵌套选择器:

    3.CSS选择器(层叠样式表):CSS规则由两个主要的部分构成:选择器,以及一条或多条声明

    selector{declaration1;declaration2;.......declarationN}

    CSS选择器:             例子:

    .class          .intro                   选择class="intro"的所有元素

    #id              #firstname          选择id="firstname"的所有元素

    *                 *                          选择所有元素

    element        p                         选择所有<p>元素

    element,element    div,p                 选择所有<div>元素和所有<p>元素

    element  element      div   p                 选择<div>元素内部的所有p元素

    [attribute]                   [target]               选择带有target属性的所有元素

    [attribute=value]        [target=_blank]    选择target="_blank"的所有元素

    4.CSS选择器测试:

    5.其他选择器:

     XPath选择器还有一个.re()方法,用于通过正则表达式来提取数据,然而不同于使用.xpath()或者css(),,re()方法返回unicode字符串的列表。所以。无法构造嵌套的.re()调用

  • 相关阅读:
    使用可跨平台的函数执行命令
    linux查看及修改文件权限以及相关
    php 文件缓存类
    秒杀抢购思路以及高并发下数据安全
    php 无限分类
    isset ,empty,is_null 区别
    phpstorm 在线激活码
    phpstorm 不能提示代码tp 3.2 $this->display等 解决办法
    laravel-ide-helper 遇到There are no commands defined问题怎么解决
    NFS共享服务
  • 原文地址:https://www.cnblogs.com/hqutcy/p/7238439.html
Copyright © 2011-2022 走看看