提取文本()
问题描述:
我想使用此代码读取网站的源:提取文本()
import urllib2
z=urllib2.urlopen('http://skreemr.com/results.jsp?q=said+the+whale&search=SkreemR+Search')
z.read()
print z
txt = open('music.txt','w')
txt.write(str(z))
txt.close()
for i in open('music.txt','r'):
if '''onclick="javascript:pageTracker._trackPageview('/clicks/''' in i:
print i
而且我得到的源代码是:
<addinfourl at 51561608L whose fp = <socket._fileobject object at 0x0000000002CCA480>>
这可能是一个我不知道的错误?
有没有人知道更好的方式来完成上述工作,而不是首先将其放入文本文件中?
答
z
是一个文件对象。实际上你的代码打印了对象描述。您需要将z.read()
的结果放入一个变量(或直接打印)。
你应该做
import urllib2
z=urllib2.urlopen('http://skreemr.com/results.jsp?q=said+the+whale&search=SkreemR+Search')
i = z.read()
print i
答
我想你错过了什么read
。尝试:
data = z.read()
print data
with open('music.txt','w') as txt:
txt.write(data)
答
.read()
实际上并没有改变z
状态。改为使用z=z.read()
。
答
with open('music.txt','w') as out:
out.write(urllib2.urlopen('http://skreemr.com/results.jsp?q=said+the+whale&search=SkreemR+Search').read()
但是,这仅仅是HTML的页面,您需要使用美丽的汤或LXML
答
z
是类文件对象解析它自己。 str(z)
只是给你看到的表示。
您需要保留由z.read()
返回的字符串(文件的内容)。
更重要的是,只是遍历它直接:
import urllib2
z=urllib2.urlopen('http://skreemr.com/results.jsp?q=said+the+whale&search=SkreemR+Search')
for i in z:
if '''onclick="javascript:pageTracker._trackPageview('/clicks/''' in i:
print i