(一) 爬虫基础知识
博客专区 > acutesun 的博客 > 博客详情
(一) 爬虫基础知识
acutesun 发表于7个月前
(一) 爬虫基础知识
  • 发表于 7个月前
  • 阅读 2
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

爬虫的分类

网络爬虫按照系统结构和实现技术,大致可以分为4种。

  •     通用网络爬虫:如传统的通用搜索引擎百度,雅虎,谷歌
  •     聚焦网络爬虫:有目的的访问万维网上的网页和链接,获取所需要的信息
  •    增量式网络爬虫:对已经下载的网页更新或者只爬取新产生的网页。例如爬取招聘信息。对于已经爬取过的数据没有必要进行爬取,只爬取新的招聘信息。
  •    深层网络爬虫:web页面按存在方式分为表层网页和深层网页。表层网页就是传统搜索引擎可以索引的页面,可以通过超链接到达。深层网络则是需用户进行一些提交才能得到的web页面。例如用户登录或者注册后才能访问的页面。例如百度贴吧

爬虫的应用
     常见的BT网站,通过爬取互联网的DHT网络中分享的BT种子信息,提供对外搜索服务。例如http://www.cilisou.cn/
     一些云盘搜索网站,通过爬取用户共享出来的云盘文件数据,对文件数据进行分类划分,从而提供对外搜索服务。例如http://www.pansou.com/

爬虫基本结构

xpath
    如果XPath的开头是一个斜线(/)代表这是绝对路径。如果开头是两个斜线(//)表示文件中所有符合模式的元素都会被选出来,即使是处于树中不同的层级也会被选出来
    
    article                选取所有article元素的所有子节点
    /article               选取根元素article
    article/a              选取所有属于article的子元素a
    //div                  选取div元素(无论出现在文档任何位置)
    article//div           选取article元素的所有后代元素div.
    //@class               选取所有名为class的属性
    /article/div[1]        选取article元素的第一个div子元素
    /article/div[last()]   选取article元素的最后一个div子元素
    //div[@lang]           选取所有拥有lang属性的div元素
    //div[@lang="eng"]     选取所有lang属性值为eng的div元素
    /div/*                 选取div的所有子元素
    //*                    选取所有元素
    //div[@*]              选取所有带属性的div元素
    /div/a|//div/p         选取所有div元素的a,p元素
    //span|//rl            选取所有的span和ul元素
    article/div/p|//span    选取所有属于articleyuans的div元素的p元素和span元素
   
   
   扩展: scrapy-djangoitem scrapy的插件, 处理scrapy的item


   
css选择器


    *                           选择所有的节点
    #container                  选择id为container的节点
    .container                  选择所有class包含container的节点
    li a                        选择所有li下的所有a节点
    ul + p                      选择ul后面的第一个p元素
    div#container > ul          选择id为container的div的第一个ul子节点
    ul ~ p                      选择ul相邻的所有p元素
    a[title]                    选择所有有title属性的a元素
    a[href='http://job.com'     选择所有href属性值'为'job.com的a元素
    a[href*='job']              选择所有href属性值'包含'job的a元素
    a[href^='http']             选择所有href属性值以http开头的a元素
    a[href$='.jpg']             选择所有href 属性值以.jpg结尾的a元素
    input[type=radio]:checked   选择选中的radio元素
    div:not(#container)         选择所有id非container的div属性
    li:nth-child(3)             选择第三个li元素
    tr:nth-child(2n)            第偶数个tr

 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 65
码字总数 83152
×
acutesun
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: