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()の状態は実際には変更されませんzz=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 に答える