爬虫学习笔记day04

Day04笔记
1. Xpath工具(解析)
    1. xpath
        在XML文档中查找信息的语言,同样适用于HTML文档检索
    2. xpath辅助工具
        1. chrome插件 :xpath-helper
            1. 打开/关闭 :ctrl+shift+x
        2. Firefox插件: Xpath checker
        3. Xpath表达式编辑工具 :XML Quire
    3.xpath 匹配规则
        1.匹配演示
            1. 匹配bookstore下面的所有节点: /bookstore
            2. 查询所有的book节点: //book
            3. 查找/bookstore下的book节点 : /bookstore /book
            4. 查找所有book节点下的title节点中,lang属性为"en"的节点 //book/title[@lang="en"]
            5. 查找bookstore下的第2个book节点下的title节点  /bookstore/book[2]/title
            6. 获取bookstore下的第2个book节点下的title节点的内容  /bookstore/book[2]/title/text()
        2. 选取节点
            / : 从根节点开始选取
            // : 从整个文档中查找节点
                // price、/bookstore/book//price
            @:  选取某个节点的属性值
                // div[@class='movie-info']/a[@class="name"]
            @: 获取某个节点的属性值
                例:获取所有的booK节点下title节点的lang属性值
                //book/title/@lang
        3. 匹配多路径
            1. 符号:|
            2. 获取所有book节点下的title节点和priceJiedian 
                //book/title | //book/price
    4. 函数
        1. contains()
            匹配1 个属性值中包含某个字符串的节点
             // title[contains(@lang,'ch')]
        2. text()
            //title[contains(@lang,'ch')]/text()
2. lxml库及xpath的使用
    1. lxml库: HTML/XML解析库
        1. Anachonda : conda install lxml
        2. Windows cmd : python -m pip install lxml
    2. 使用流程
        1. 导入模块: from lxml import etree
        2. 创建解析对象: parseHtml = etree.HTML(html)
        3. 调用xpath : 
            r_list = parseHtml.xpath('xpath表达式')
        4. 如何获取节点对象的文本内容
            节点对象名.text
3. 抓取百度贴吧中所有帖子例的图片
    1. 指定贴吧的所有图片
    2. 思路:
        1. 先获取贴吧主页URL,下一页: 找url规律
        2. 获取1页中每个帖子的url ['链接1','','','']
        3. for 循环遍历2中列表,发请求,提取帖子中图片链接
            ['图片链接1,','图片链接2'....]
        4. for 循环遍历3中列表,发请求,以wb方式保存本地

    3. 步骤
        1. 获取贴吧主页url
            http://tieba.com/f?+ 查询参数
        2.(xpath)提取页面中所有帖子的url
            src :完整的链接
            href : 需要和主url进行拼接
            http://tieba.baidu.com + /p/5020551987
    
            校花吧:
            self.url_xpath = "//div/div/a[@class='j_th_tit ']/@href"
        
      
        3.  匹配一个帖子中所有图片的url
            校花吧:
            self.img_xpath = "//div/cc/div/img[@class='BDE_Image']/@src"
            
 
            for 每个帖子的连接 in [帖子连接列表]:
                res = get(每个帖子链接)
                html = res.text
                图片链接列表 = xpath('')

                for 每个图片连接 in [图片连接列表]:
                    res =get(每个图片的连接)
                    html = res.content
            
        5.注意: 
            1. xpath表达式在网页中可匹配但在程序中是空列表
                1. User-Agent :最好换为IE浏览器
                2. 把页面下载下来 再分析

    
        6.案例 :糗事百科-xpath
            1. 目标:用户昵称,段子内容,好笑数量,评论数量
            2. 步骤
                1. 找url
                第一页: https://www.qiushibaike.com/
                第二页:https://www.qiushibaike.com/8hr/page/2/
                第三页: https://www.qiushibaike.com/8hr/page/3/

                2. xpath表达式
                    1. 基准的xpath 表达式(每个段子的节点对象)
                        //div[contains(@id,"qiushi_tag_")]
                    
                    2. for element in [段子节点对象列表]:
                        用户昵称: './div/a/h2'
                        段子内容: './/div[@class="content"]/span'
                        好笑数量: './/i'
                        评论数量: './/i'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值