【发布时间】:2013-12-08 23:03:16
【问题描述】:
尝试使用 BeautifulSoup 从网页中提取文本。 想要将 soup.findall() 的输出作为输入传递给使用 re 模块进行进一步数据清理
普通变量文本输入正常,但如果我传递soup.findall() 的输出,它会抛出以下错误。
Traceback(最近一次调用最后一次):文件“scrape2.py”,第 18 行,在 url = re.search('http://[az.]/[A-Za-z/%0-9-]', univ) 文件 "/usr/lib/python2.7 /re.py”,第 142 行,正在搜索中 return _compile(pattern, flags).search(string) TypeError: expected string or buffer
soup.findall() 的可变打印正在工作。 如何直接传递soup.findall() 的输出作为输入ro re.search 命令。
完整的源代码
from BeautifulSoup import BeautifulSoup
import urllib2
import os
import re
page=urllib2.urlopen(url)
soup = BeautifulSoup(open("rr-ss.html").read())
univ=soup.findAll('div',{'id':'divBrand1'})
print univ
text = '<span class="normaltextblue"><a href="http://www.roya3d.com/zdae/bug/coastdfilm-coated%20tab">Rocks</a></span> '
#following command throwing error
url = re.search( 'http://[a-z.]*/[A-Za-z/%0-9-]*', univ)
#following line working fine
url = re.search( 'http://[a-z.]*/[A-Za-z/%0-9-]*', text)
if url:
found = url.group(0)
print found
【问题讨论】:
标签: python regex web-scraping beautifulsoup