zoukankan      html  css  js  c++  java
  • Python 2.7_爬取CSDN单页面博客文章及url(二)_xpath提取_20170118

    上次用的是正则匹配文章title 和文章url,因为最近在看Scrapy框架爬虫 需要了解xpath语法 学习了下拿这个例子练手

    1、爬取的单页面还是这个rooturl:http://blog.csdn.net/column/details/why-bug.html

    2、用requests的 get方法添加一个header 请求rooturl获得网站源代码  不添加header源代码里面是抓不到内容的

    3、用lxml下的etree.HTML()方法 将requests请求的html源码(html变量)返回给seletor这个对象

    4、分析网页结构 找到能够包含文章url和标题内容的区域 调用返回的selector.xpath()方法 返回一个Element类型对象的列表infos

    5、定义一个空列表titlelists,这个大列表用来保存 第6步取出的 titleurls列表和文章titlenames列表 用zip函数整理成titlelist列表 元素为(titleurl,titlename)元组的一个列表 进而添加进大列表titlelists

    6、大列表titlelists 此时的数据类型是列表 每一个元素为一个小列表 小列表元素为元组 进行遍历切片 之前用的是enumerate 方法取索引和内容 现在用titlelists.index(i)方法取索引

    代码如下:

    #coding:utf-8
    from lxml import etree
    import requests
    import sys
    reload(sys)
    sys.setdefaultencoding('utf8')
    
    rooturl='http://blog.csdn.net/column/details/why-bug.html'
    headers={'User-Agent':'Chrome'}
    req=requests.get(rooturl,headers=headers)
    req.encoding='utf-8'
    html=req.text
    selector=etree.HTML(html)
    infos=selector.xpath('//ul[@class="detail_list"]/li')
    titlelists=[]
    for info in infos:
        titleurls=info.xpath('h4/a/@href')
        titlenames=info.xpath('h4/a/text()')
        titlelist=zip(titleurls,titlenames)
        titlelists.append(titlelist)
    print  '爬取完毕,一共爬取了%s篇文章' % len(titlelists)
    for i in titlelists:
        print '第%s篇文章为:【%s】,链接:%s' % (titlelists.index(i)+1,i[0][1],i[0][0])
    

     

      

  • 相关阅读:
    handlebars.js 模板引擎
    g2-plugin-slider.js 数据滚动条插件
    js拓扑图-vis插件
    js地图-leaflet
    css3 animation动画停留在最后一帧
    input输入手机号增加空格
    百度输入框 获取焦点时 滚动到页面顶部的实现
    C#入门经典-第15章Windows 编程
    C# 经典入门12章-System.Collections.Generic命名空间
    C# 经典入门12章-使用泛型-1
  • 原文地址:https://www.cnblogs.com/Mr-Cxy/p/6298169.html
Copyright © 2011-2022 走看看