python简单正则的爬取

原创 2015年11月18日 18:43:56

 这是做的第一个任务,爬取  http://www.thebigdata.cn/  中的标题和链接。

 红框中为要爬取的部分:


 以下为部分源代码:


 1、 我一开始是在linux系统下做的,因为是跟着视频学习,然而遇到一些问题,所以改为在PYcharm里,练习的时候是链接和标题分开爬取的,所以将写的代码复制粘贴,运行,然而并没有出现什么,失败。当时是正则的问题。但是在我的电脑上出现了一个问题:


其实这对数据爬取没什么影响,上网查了一下,SID就是为域或本地计算机中创建的每个帐户分配的唯一ID 字符串因为我的电脑中建立.py文件时会自动生成:

__author__ = 'DELL'
这一行代码,后来在解决其他问题时,因为它多余去掉了,很幸运虽然那个问题虽没解决,但这个问题再没有出现过。

2、最开始是将链接和标题分开练习爬取的,爬取链接时发现不止有所需要的链接还有一些网址,类似这样:

发现是正则写的不够全面,观察了一下,发现要爬取的链接开头都是大写英文字母,所以就将正则改为了:

reg=r'href="(.*?)\.html"'
#改为#
reg=r'href="([A-Z].*?)\.html"'
其实这有些投机取巧,看了她们写的比较全面的:

reg=r'</span><a href="((YeJieDongTai|YingYongAnLi|JieJueFangAn|Hadoop|HBase|QiTa|JiShuBoKe)/\d{4,5}\.html)"(.*?)>(.*?)</a>'

3、将链接和标题一块爬取的时候,开始写了两个正则的函数,就是想将两个爬虫合一块,然而这样要不出不来,要么链接和标题是分开的,看了她们的代码发现她们用了一个语法:

re.finditer()

然后在输出时是这样写的:
fd.write(item.group(1)+'\t'+item.group(3)+'\n')
总的来说还是自己掌握的只是不够多。
下面是爬取的代码:
#conding-utf8
import re
import urllib
url='http://www.thebigdata.cn/'

def getHtml(url):
    page=urllib.urlopen(url)
    html=page.read()
    return html
def getDSJ(html):
    reg=r'</span><a href="([A-Z].*?\.html)"(.*?)>(.*?)</a>'
    lsre=re.compile(reg)
    ls=re.finditer(lsre,html)
    return ls

html=getHtml(url)
ls=getDSJ(html)

fd=open(r'theBigDate2.txt','a+')
for item in ls:
    fd.write(item.group(1)+'\t'+item.group(3)+'\n')
fd.close()
爬取的部分内容:






版权声明:本文为博主原创文章,未经博主允许不得转载。

正则表达式快速入门(python示例)

正则表达式的作用我就不赘述了,首先讲解一下单个字符的匹配。 1、‘’.“(点):匹配除了(\n)之外的所有字符。 首先import re,以下的示例都默认已经导入了re包,不再另行说明。 string...
  • ali197294332
  • ali197294332
  • 2016年03月15日 22:19
  • 1097

Python简单正则笔记

若是Python2.7: no encoding declared 错误在头上添加:#coding:utf-8 替换: import re f = open("foo.txt") ...
  • philosophyatmath
  • philosophyatmath
  • 2014年12月04日 22:44
  • 711

正则表达式简单用法

1. 正则语法1.1 基本元字符 元字符 含义 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意空白符 (Space Tab) \d...
  • spch2008
  • spch2008
  • 2016年01月24日 15:31
  • 2850

python 正则化

https://mp.weixin.qq.com/s?__biz=MzA4MjEyNTA5Mw==&mid=2652564775&idx=2&sn=3082d2377896af7eab919d0b52...
  • summermaoz
  • summermaoz
  • 2017年06月12日 14:18
  • 1015

python整理笔记4——正则表达式(QQ,手机号,邮箱,用户名,密码)

QQ号表达式: 分析: 1、首先扣扣号开头不能为0; 2、QQ号必须大于5且小于11(或12,13,QQ号最长位); 则正则表达式为:    “[1-9]\\d{4,10}"  解析: [1-9]为第...
  • xiaobote_
  • xiaobote_
  • 2015年05月20日 16:53
  • 4522

[Python]网络爬虫(七):Python中的正则表达式教程

接下来准备用糗百做一个爬虫的小例子。 但是在这之前,先详细的整理一下Python中的正则表达式的相关内容。 正则表达式在Python爬虫中的作用就像是老师点名时用的花名册一样,是必不可少的...
  • wxg694175346
  • wxg694175346
  • 2013年05月15日 13:29
  • 126759

python正则表达式系列(4)——分组和后向引用

分组,即分组匹配,也称为捕获组,是正则中的一种比较重要的匹配方式。此外后向引用和分组相结合,可以写出很多复杂匹配场景的正则。...
  • dnxbjyj
  • dnxbjyj
  • 2017年04月27日 08:03
  • 1932

Python常见正则表达式

一、校验数字的表达式数字:^[0-9]*$n位的数字:^\d{n}$至少n位的数字:^\d{n,}$m-n位的数字:^\d{m,n}$零和非零开头的数字:^(0|[1-9][0-9]*)$非零开头的最...
  • sinat_34439107
  • sinat_34439107
  • 2017年04月17日 17:56
  • 756

python的正则提取技巧

转自:http://ju.outofmemory.cn/entry/71121 用python正则提取字符串的方法 在日常工作中经常遇见在文本中提取特定位置字符串的需求.python的...
  • maggie2425
  • maggie2425
  • 2016年10月20日 16:43
  • 971

关于Python正则re中的(.*?)

首先来看看他们的基本含义: 点星问号 (md一直不明白水印为什么不是我的主页而是csdn的主页) 正则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少数...
  • drdairen
  • drdairen
  • 2016年04月12日 20:02
  • 1319
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python简单正则的爬取
举报原因:
原因补充:

(最多只允许输入30个字)