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()调用

  • 相关阅读:
    hdu 2222 Keywords Search
    Meet and Greet
    hdu 4673
    hdu 4768
    hdu 4747 Mex
    uva 1513 Movie collection
    uva 12299 RMQ with Shifts
    uva 11732 strcmp() Anyone?
    uva 1401
    hdu 1251 统计难题
  • 原文地址:https://www.cnblogs.com/hqutcy/p/7238439.html
Copyright © 2011-2022 走看看