爬虫爬取笔记

步骤:

1、获取首页response内容;

2、解析网页内容,获取所需信息;

3、获取下一页url;

4、获取下一页response信息;

5、解析网页内容,获取所需信息(使用xpath解析);

6、保存到文件。

一步一步解决

什么是xpath

 

xml数据都是双标签

html既有单标签又有双标签

xpath可以快速获取每个标签的属性

parsel模块是一个xml html解析器,返回对象由xpath的方法,然后返回结果的列表

2、xpath的语法

/从根节点进行提取

// 表示跨节点获取标签.例如

.  表示选取当前节点,对节点数据的二次提取 例如

.. 表示选取当前节点的父节点 例如

@  选取属性。(每一个标签里面都有属性值)

text() 选取标签包裹文本。

通配符

 * 匹配任何元素节点 

@*匹配任何属性的节点

node()匹配任何类型的节点

/div/*选取div元素中的所有子元素

//*选取文档中的所有元素

//title[@*]选取所有带属性的title元素

import parsel

text = '''
     <table width="100%">
        <tr class="item">
          <td width="100" valign="top">
            <a class="nbg" href="https://book.douban.com/subject/1007305/"
              onclick="moreurl(this,{i:'0'})"

              >
              <img src="https://img1.doubanio.com/view/subject/s/public/s1070959.jpg" width="90" />
            </a>
          </td>
          <td valign="top">
            
            <div class="pl2">


              <a href="https://book.douban.com/subject/1007305/" onclick=&#34;moreurl(this,{i:&#39;0&#39;})&#34; title="红楼梦"
                
              >
                红楼梦

                
              </a>



                &nbsp; <img src="/pics/read.gif" alt="可试读" title="可试读"/>

              
            </div>

              <p class="pl">[清] 曹雪芹 著 / 人民文学出版社 / 1996-12 / 59.70元</p>

            

              
              <div class="star clearfix">
                  <span class="allstar50"></span>
                  <span class="rating_nums">9.6</span>

                <span class="pl">(
                    372235人评价
                )</span>
              </div>

            
              <p class="quote" style="margin: 10px 0; color: #666">
                  <span class="inq">都云作者痴,谁解其中味?</span>
              </p>


          </td>
        </tr>
     </table>
      '''
data = parsel.Selector(text)
result = data.xpath('/html/body/table/tr/td/a').extract()#加入标准数据格式,从根节点

result1 = data.xpath('//a').extract()#跨节点

result2 = data.xpath('//a')#选取一个节点
result3 = result2.xpath('./img').extract()#对当前节点进行二次提取

result4 = data.xpath('//a')#选取一个节点
result5 = result4.xpath('../@class').extract()#获取父节点的属性

result6 = data.xpath('//td[1]').extract()#获取一个同级节点
result7 = data.xpath(('//td'))[0].extract()#同上,不同方法

result8 = data.xpath('//td[@width="100"]').extract()#根据属性值进行定位

result9 = data.xpath('//a[@href="https://book.douban.com/subject/1007305/"]/text()').extract()#根据属性值进行定位并获取文本内容

result10 = data.xpath('//a[1]/@class').extract()#根据属性值进行定位并获取文本内容

#下面是模糊查询的内容
result11 = data.xpath('//td[contains(@wi,"1")]').extract()


#xpath中节点选择的工具


print(result11)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值