3

次のように、ヘッダーを送信して、サイトをサーフィンしているユーザーだとサイトに認識させることにより、Web サイトから HTML を取得しています。

def page(goo):
    import fileinput
    import sys, heapq, array, urllib
    import BeautifulSoup
    from BeautifulSoup import BeautifulSoup
    import re
    from urllib import FancyURLopener
    class MyOpener(FancyURLopener):
        version = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11'
    myopener = MyOpener()
    filehandle = myopener.open(goo)
    return filehandle.read()
page=page(WebSite)

これは、Google や Wikipedia を含むほとんどの Web サイトで完全に機能しますが、Tmart.com では機能しません。どういうわけか、Tmart はそれが Web ブラウザーではないことがわかり、エラーを返します。どうすればこれを修正できますか?

4

1 に答える 1

5

彼らはあなたが JavaScript インタープリターを持っていないことを検出している可能性がありますか? 受信しているエラー メッセージを見ずに判断するのは困難です。ただし、動作が保証されている方法が 1 つあります。そして、それは Selenium Webdriver を使用してブラウザーを直接駆動しています。

Selenium は通常、Web サイトの機能テストに使用されます。ただし、JavaScript を使用するサイトのスクレイピングにも非常に適しています。

from selenium import webdriver

browser = webdriver.Chrome()
browser.get('http://www.someurl.com')

html = browser.page_source

ここでブラウザで利用可能なすべてのメソッドを参照してください: http://code.google.com/p/selenium/source/browse/trunk/py/selenium/webdriver/remote/webdriver.py これを機能させるには、利用可能な chromedriver 実行可能ファイル: http://code.google.com/p/chromedriver/downloads/list

于 2012-11-24T08:23:16.263 に答える