php 正则 抓取网页(Python爬取网页使用的正则表达式及及方法)

优采云 发布时间: 2021-10-15 17:07

  php 正则 抓取网页(Python爬取网页使用的正则表达式及及方法)

  本文文章主要介绍Python在爬取网页信息时经常用到的正则表达式和方法。是一个总结文章,比较实用,主要是解决我遇到的爬虫问题,希望对大家有帮助~

  当然,如果Selenium基于自动化测试爬虫和BeautifulSoup分析网页DOM节点会更方便,但本文更多的是基于正则的底层爬取分析。

  涉及内容如下: 推荐基础文章:Python正则表达式指南-AstralWind

  -------------------------------------------------- -------------------------------------------------- --------------------------

  1.获取标签间的内容

  这部分主要使用正则表达式来获取两个标签之间的内容,通常这样的标签是成对出现的。

  开始标签如:,,

  ,,

  ...

  后缀标签,例如:

  ,,

  ,,

  ...

  核心代码:

  res_tr = r'(.*?)

  '

  m_tr = re.findall(res_tr,language,re.S|re.M)

  例子:

  # coding=utf-8

import re

language = '''性別:男'''

#正则表达式获取之间内容

res_tr = r'(.*?)'

m_tr = re.findall(res_tr,language,re.S|re.M)

for line in m_tr:

print line

#获取表格第一列th 属性

res_th = r'(.*?)'

m_th = re.findall(res_th,line,re.S|re.M)

for mm in m_th:

print unicode(mm,'utf-8'), #unicode防止乱

#获取表格第二列td 属性值

res_td = r'(.*?)'

m_td = re.findall(res_td,line,re.S|re.M)

for nn in m_td:

print unicode(nn,'utf-8')

  输出如下:

  >>>

性別:男

性別: 男

>>>

  Python 通过 re 模块提供对正则表达式的支持。使用re的一般过程是先将正则表达式的字符串形式编译成Pattern实例,然后使用Pattern实例对文本进行处理得到匹配结果(一个Match实例),最后使用Match实例获取信息并执行其他操作。

  findall(string[, pos[, endpos]]) | re.findall(pattern, string[, flags]):搜索字符串并以列表的形式返回所有匹配的子字符串。RE的常用参数包括:

  re.I(re.IGNORECASE):忽略大小写(括号内完整书写)

  re.M(re.MULTILINE):多行模式,改变'^'和'$'的行为

  re.S(re.DOTALL):点击任意匹配模式改变'.'的行为

  -------------------------------------------------- -------------------------------------------------- --------------------------

  2.获取超链接之间的内容

  通常,在使用正则表达式时,需要通过分析网页链接来获取网址或网页内容。核心代码如下:

  res = r'(.*?)'

  mm = re.findall(res, content, re.S|re.M)

  urls=re.findall(r"", content, re.I|re.S|re.M)

  例子:

<p># coding=utf-8

import re

content = '''

浙江省主题介绍

贵州省主题介绍

'''

#获取<a href></a>之间的内容

print u'获取链接文本内容:'

res = r'<a .*?>(.*?)</a>'

mm =  re.findall(

res, content, re.S|re.M)

for value in mm:

    print value

#获取所有<a href></a>链接所有内容

print u'\n获取完整链接内容:'

urls=re.findall(r"

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线