1

このスクリプトpdfmeatを使用して、GoogleScholarから論文に関するデータを取得しようとしました。

このスクリプトは私のPCで非常にうまく機能しますが、このスクリプトをサーバーに配置しようとすると、結果が得られません。私のサーバーがGoogleScholarのブラックリストに含まれている可能性が非常に高いことがわかりました。エラーが発生した場合は、エラーが発生します(チャプタを解決するためにリダイレクトされます)。

$ wget scholar.google.com
--2011-08-08 04:52:19--  http://scholar.google.com/
Resolving scholar.google.com... 72.14.204.147, 72.14.204.99, 72.14.204.103, ...
Connecting to scholar.google.com|72.14.204.147|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://www.google.com/sorry/?continue=http://scholar.google.com/ [following]
--2011-08-08 04:52:24--  http://www.google.com/sorry/?continue=http://scholar.google.com/
Resolving www.google.com... 74.125.93.147, 74.125.93.99, 74.125.93.103, ...
Connecting to www.google.com|74.125.93.147|:80... connected.
HTTP request sent, awaiting response... 503 Service Unavailable
2011-08-08 04:52:24 ERROR 503: Service Unavailable.

次に、wget --execute "http_proxy=urltoproxy"にオプションがあることがわかりました。私はそれをしました

wget -e "http_proxy=oneHttpProxy" scholar.google.com

そして私はグーグル学者からindex.htmlを保存することができました。

次に、pdfmeat.pyで同じことを試みましたが、どちらも結果がありません。

これはコードです:

def getWebdata(self, link, referer='http://scholar.google.com'):
    useragent = 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.8) Gecko/20100214 Ubuntu/9.10 (karmic) Firefox/3.5.8'
    c_web = 'wget --execute "http_proxy=oneHttpProxy" -qO- --user-agent="%s" --load-cookies="%s" "%s" --referer="%s"' % (useragent, WGET_COOKIEFILE, link, referer) 
    c_out = os.popen(c_web)
    c_txt = c_out.read()
    c_out.close()
    if re.search("We're sorry", c_txt) or re.search("please type the characters", c_txt):
        self.logger.critical("scholar captcha")
        if not self.options.quiet:
            print "PDFMEAT: scholar captcha!"
        sys.exit()
    self.logger.debug("getwebdata excerpt: %s" % (re.sub("\n", " ", c_txt[0:255])))
    self.queryLog.append("getwebdata excerpt: %s" % (re.sub("\n", " ", c_txt[0:255])))
    return c_txt

スクリプトはモジュールosを使用します。元の関数には、wgetの--executeオプションがありません。

前もって感謝します

4

1 に答える 1

0

http_proxyenvを設定してみましたか。var。?

それで:

$ export http_proxy = "oneHttpProxy"

$ pythonpdfmeat.py...。

于 2011-08-08T10:25:08.400 に答える