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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 2.7_爬取CSDN单页面利用正则提取博客文章及url_20170113相关的知识,希望对你有一定的参考价值。

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

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)

    技术分享

 

 

以上是关于Python 2.7_爬取CSDN单页面利用正则提取博客文章及url_20170113的主要内容,如果未能解决你的问题,请参考以下文章

Python3 爬虫 -- BeautifulSoup之再次爬取CSDN博文

Python 2.7_First_try_爬取阳光电影网_20161206

Python利用urllib模块+正则表达式并利用BeautifulSoup模块进行内容解析,爬取院士信息

为你的爬虫提提速?

Python 爬虫数据解析--正则(爬取糗图)

利用Python正则匹配中文——爬取校园网公告栏中感兴趣的内容