我正在使用urllib2
来阅读页面。我需要对源代码进行快速正则表达式并提取一些变量,但urllib2
表示为文件对象而不是字符串。
我是python的新手,所以我很难看到我如何使用文件对象来做到这一点。有没有快速的方法将其转换为字符串?
答案 0 :(得分:77)
您可以在交互模式下使用Python来搜索解决方案。
如果f
是您的对象,则可以输入dir(f)
以查看所有方法和属性。有一个叫read
。输入help(f.read)
,它会告诉您f.read()
是从文件对象中检索字符串的方法。
答案 1 :(得分:13)
来自文档file.read()(我的重点):
file.read([大小])
从文件中读取最多大小字节(如果读取在获取大小字节之前达到EOF,则更少)。如果size参数为负数或省略,则读取所有数据,直到达到EOF。 字节作为字符串对象返回。立即遇到EOF时返回空字符串。 (对于某些文件,如ttys,在EOF被击中后继续读取是有意义的。)注意,此方法可能多次调用底层C函数fread,以尽可能接近大小字节。另请注意,在非阻塞模式下,即使没有给出大小参数,也可能返回的数据少于请求的数据。
请注意,对大型字符串对象进行regexp搜索可能效率不高,并考虑使用file.next()逐行进行搜索(文件对象是其自己的迭代器)。
答案 2 :(得分:5)
Michael Foord,又名Voidspace有一个关于urllib2的优秀教程,你可以在这里找到: urllib2 - The Missing Manual
您正在做的事情应该非常简单,请观察以下示例代码:
import urllib2
import re
response = urllib2.urlopen("http://www.voidspace.org.uk/python/articles/urllib2.shtml")
html = response.read()
pattern = '(V.+space)'
wordPattern = re.compile(pattern, re.IGNORECASE)
results = wordPattern.search(html)
print results.groups()