年前有点忙,没来的及更博,最近看爬虫正则的部分 巩固下

1.爬取的单页面:http://blog.csdn.net/column/details/why-bug.html

2.过程 解析url获得网站源代码

3.找到文章标题列表和文章url(a标签下’href'属性)组成列表

4.for循环取出

#解析用到的还是urlllib urllib2两个模块 并加了个header请求表头

代码及过程如下:

#coding:utf-8
import re
import urllib
import urllib2 rooturl='http://blog.csdn.net/column/details/why-bug.html'
#urllib2.Request()方法 请求
req=urllib2.Request(rooturl)
req.add_header('User-Agent','Chrome')
req=urllib2.urlopen(req)
#req变量的read()方法获得源代码
html=req.read()
#分析文章标题和href属性
#标题和文章url都在a标签内 url格式为'http://blog.csdn.net/pleasecallmewhy/article/details/(****)',标题在'target="_blank">(****)</a>'
#写正则表达式 利用()小括号将url和标题分组
rs=r'<a href="(http://blog.csdn.net/pleasecallmewhy/article/details/.*?)" target="_blank">(.*?)</a>'
#利用正则findall(正则表达式rs,查找的范围) 现在及findall(rs,html)找到所有符合条件的元素并返回一个列表titlelist
titlelist=re.findall(rs,html)
#因为正则表达式是有2个分组 一个是文章url('href='以后括号的内容),一个是文章标题 这两个内容在titlelist里面是以元组形式构成的
#列表的长度就是页面有多少篇博客文章
print '爬取完毕,一共%s篇文章' % len(titlelist)
#因为想实现打印出第几篇文章 文章标题 文章链接的效果 需要对titlelist进行遍历 用到的是列表list类的enumerate()方法 打印出列表索引和值
#第一个索引值为0 值为一个元组(文章url,文章标题) 这个元组又可以切片 因此取这个元组的第一个元素和第二个元素及实现效果
for i,j in enumerate(titlelist):
#i为titlelist列表的索引 j为titlelist列表的值
#取j的第一个元素j[0]即文章url 赋值给变量titurl 标题同样
titleurl=j[0]
titlename=j[1]
#打印效果 用%格式化输出 titlelist索引值从0开始因此对i+1 代表第一篇文章
print '第%s篇文章为:【%s】,链接:%s' %(i+1,titlename,titleurl)

    

 

最新文章

  1. Objective-C枚举的几种定义方式与使用
  2. jquery submit() 提交失败
  3. 我的职业生涯总结---班门弄斧之我们该怎样从零开始学习.NET
  4. meta标签兼容性
  5. css扁平化博客学习总结(三)header代码实现
  6. Java集合类之栈Stack
  7. BrnShop开源网上商城第三讲:插件的工作机制
  8. WCF学习心得
  9. windows phone 7 定位(获取经纬度),然后找到经纬度所在的位置(城市信息)
  10. Django 连接mysql数据库中文乱码
  11. CMake的一些正确姿势
  12. ubuntu查看本地ip
  13. ubuntu编译opencv3.1遇到的问题
  14. word 2016 加载 mathtype
  15. 网络基础、ftp任务(进度条、计算文件大小、断点续传、搭建框架示例)
  16. Trystrtofloat
  17. Jetty源码解析(web.xml的处理机制)
  18. 《A First Course in Abstract Algebra with Applications》-chaper1-数论-棣莫弗定理
  19. php的数组汉字符串常用函数
  20. Oracle新手常遇到的问题

热门文章

  1. 跟踪 twisted 里deferred 的Callback
  2. 如何修改Eclipse中的快捷键
  3. INSPIRED启示录 读书笔记 - 第39章 打造平台产品的经验
  4. IEnumerable的一些基本方法 补充
  5. python中的元类metaclass
  6. TypeScript手册1 - 基本类型和接口
  7. HTML图片热区 map area 标签
  8. vs 2010 mvc 3.0安装软件
  9. PAT1058. A+B in Hogwarts (20)
  10. JavaWeb -- 四个域对比 request,servletContext, Session, pageContext