【问题标题】:Python 2.7 parsing regexPython 2.7 解析正则表达式
【发布时间】:2015-08-09 09:53:13
【问题描述】:

所以我正在抓取一个网站并尝试输出这些跨度标签之间的任何内容(它会根据我抓取的 URL 而改变)

<span class="inviter-name">tickzapman12345</span>


import urllib2
import re

url = "http://beta.cursevoice.com/join/jt95"
req = urllib2.Request(url)
req.add_header('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox') 


response = urllib2.urlopen(req)

matchObj = re.search(r'<span class="inviter-name">(.*?)</span>',str(response))

f = open('output.txt','w')
f.write(str(matchObj))
f.close()

但是,当我检查输出文件时,它只显示“无”,我的正则表达式有问题吗?

【问题讨论】:

  • matchObj = re.search(r'&lt;span class="inviter-name"&gt;(.*?)&lt;/span&gt;',str(response)).group()
  • AttributeError: 'NoneType' 对象没有属性 'group'

标签: regex python-2.7 parsing web-scraping


【解决方案1】:

您可以使用 BeautifulSoup 解析器而不是正则表达式。

>>> from bs4 import BeautifulSoup
>>> s = '<span class="inviter-name">tickzapman12345</span>'
>>> soup = BeautifulSoup(s)
>>> soup.select('span.inviter-name')[0].text
'tickzapman12345'

matchObj = re.search(r'<span class="inviter-name">(.*?)</span>',response.read())
f = open('output.txt','w')
f.write(matchObj.group(1))
f.close()

【讨论】:

  • 我想使用正则表达式;我觉得我的代码应该可以工作了
  • response 变量的值是多少?
  • ">"
  • 我得到了网页的全部源代码
  • 谢谢,它成功了。知道如何让它返回跨度标签之间的任何内容吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-23
  • 2011-06-05
  • 2012-09-12
  • 2015-04-29
  • 2012-07-06
  • 2014-08-12
  • 1970-01-01
相关资源
最近更新 更多