1

我正在尝试使用以下代码阅读网站的源代码:

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>>

这可能是一个我不知道的错误?
有谁知道在不先将其放入文本文件的情况下完成上述工作的更好方法?

4

5 回答 5

4

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
于 2011-06-05T17:15:54.900 回答
2

.read()实际上并没有改变 的状态z。改为使用z=z.read()

于 2011-06-05T17:14:21.680 回答
1

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
于 2011-06-05T17:15:06.700 回答
0

我认为你错过了什么read。尝试:

data = z.read()
print data
with open('music.txt','w') as txt:
    txt.write(data)
于 2011-06-05T17:14:18.930 回答
0
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 解析它

于 2011-06-05T17:14:48.810 回答