无法从网站上提取HTML

时间:2012-11-24 08:10:16

标签: python html web urllib

我正在从网站上提取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)

这适用于大多数网站,甚至谷歌和维基百科,但不适用于Tmart.com。不知何故,Tmart可以看到它不是一个Web浏览器,并返回错误。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:5)

他们可能检测到您没有JavaScript解释器?很难说没有看到你收到的错误信息。有一种方法可以保证工作。这就是使用Selenium Webdriver直接驱动浏览器。

Selenium通常用于功能测试网站。但是对于使用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