上次用的是正则匹配文章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])

 

 

Python 2.7_爬取CSDN单页面博客文章及url(二)_xpath提取_20170118的更多相关文章

  1. Python 2.7_爬取CSDN单页面利用正则提取博客文章及url_20170114

    年前有点忙,没来的及更博,最近看爬虫正则的部分 巩固下 1.爬取的单页面:http://blog.csdn.net/column/details/why-bug.html 2.过程 解析url获得网站 ...

  2. 一文搞定scrapy爬取众多知名技术博客文章保存到本地数据库,包含:cnblog、csdn、51cto、itpub、jobbole、oschina等

    本文旨在通过爬取一系列博客网站技术文章的实践,介绍一下scrapy这个python语言中强大的整站爬虫框架的使用.各位童鞋可不要用来干坏事哦,这些技术博客平台也是为了让我们大家更方便的交流.学习.提高 ...

  3. [Python学习] 简单爬取CSDN下载资源信息

    这是一篇Python爬取CSDN下载资源信息的样例,主要是通过urllib2获取CSDN某个人全部资源的资源URL.资源名称.下载次数.分数等信息.写这篇文章的原因是我想获取自己的资源全部的评论信息. ...

  4. python爬虫实例——爬取歌单

    学习自<<从零开始学python网络爬虫>> 爬取酷狗歌单,保存入csv文件 直接上源代码:(含注释) import requests #用于请求网页获取网页数据 from b ...

  5. Python 2.7_爬取妹子图网站单页测试图片_20170114

    1.url= http://www.mzitu.com/74100/x,2为1到23的值 2.用到模块 os 创建文件目录; re模块正则匹配目录名 图片下载地址; time模块 限制下载时间;req ...

  6. python使用bs4爬取boss静态页面

    思路: 1.将需要查询城市列表,通过城市接口转换成相应的code码 2.遍历城市.职位生成url 3.通过url获取列表页面信息,遍历列表页面信息 4.再根据列表页面信息的job_link获取详情页面 ...

  7. 爬虫概念与编程学习之如何爬取视频网站页面(用HttpClient)(二)

    先看,前一期博客,理清好思路. 爬虫概念与编程学习之如何爬取网页源代码(一) 不多说,直接上代码. 编写代码 运行 <!DOCTYPE html><html><head& ...

  8. 看我怎么扒掉CSDN首页的底裤(python selenium+phantomjs爬取CSDN首页内容)

    这里只是学习一下动态加载页面内容的抓取,并不适用于所有的页面. 使用到的工具就是python selenium和phantomjs,另外调试的时候还用了firefox的geckodriver.exe. ...

  9. 爬取王垠的博客并生成pdf

    尚未完善,有待改进 #!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = 'jiangwenwen' import pdfkit im ...

随机推荐

  1. 03 Spring框架 bean的属性以及bean前处理和bean后处理

    整理了一下之前学习spring框架时候的一点笔记.如有错误欢迎指正,不喜勿喷. 上一节我们给出了三个小demo,具体的流程是这样的: 1.首先在aplicationContext.xml中添加< ...

  2. iframe与父窗口之间数据互相获取

    Js/Jquery获取iframe中的元素 博客分类: jquery javascript jquery  在web开发中,经常会用到iframe,难免会碰到需要在父窗口中使用iframe中的元素.或 ...

  3. loadrunder之脚本篇——定义全局变量

    如果参数是全局的,在脚本中的任何一个Action中都可以使用,变量一般是局部的,如果跨Action调用会出现未声明的错误. 打开Script视图中左侧Action列表中的globals.h文件,可定义 ...

  4. iOS WKWebView OC 与 JS 交互学习

    我写WKWebView 想让 服务端相应 一个 方法但是不响应,根据 UIWebView 用 JSContext就能拿到响应的处理经验是不是服务端 也需要 对 WKwebView有兼容的一个写法??? ...

  5. 灰色3D按钮组合

    在线演示 本地下载

  6. linux+java+webdriver chrome handless无界面启动

    网上现有的解决方案要么是windows下的,要么是python的,搞了一天终于解决了,记录如下. 1 下载chrome linux版和对应版本的webdriver,我这里使用的是chrome66和ch ...

  7. pd.read_csv的header用法

    默认Header = 0: In [3]: import pandas as pd In [4]: t_user = pd.read_csv(r'C:\Users\Song\Desktop\jdd_d ...

  8. mongodb 的安装(Centor OS )

    1.下载地址 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.2.tgz 2.解压.配置 tar zxvf mongodb ...

  9. JBOSS invoker GETSHELL(PHP版)

    <?php $target = @$argv[1]; $procotol = @$argv[2]; if ($argc < 2) { print "[-]:php Jboss.p ...

  10. js运算符、关键字、保留字、转义字符