2012-11-24 54 views
3

我从网站拉HTML,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可以看到它不是网络浏览器,并返回一个错误。我怎样才能解决这个问题?

+0

如果您复制并粘贴错误或堆栈跟踪,这将是很有帮助。 – aychedee

+2

提示:有问题的网站使用java脚本来设置cookie并忽略没有正确cookie的请求。 –

+0

什么是* wab *网站? –

回答

5

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

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

+0

我跑
'代码' #python27 高清页(咕): 硒进口的webdriver 浏览器= webdriver.Chrome() browser.get(互) HTML = browser.page_source 回报html.read() \t \t 页( “tmrat.com”) ,我也得到
回溯(最近通话最后一个): 文件 “C:\用户\服务器\下载\ scaner.py”,9号线,在 页面( “tmrat.com”) 文件“C:\ Users \ Server \ Downloads \ scaner.py”,第3行,第 ,来自selenium import webdriver 文件“C:\ Users \ Server \ Downloads \ selenium.py”,行806 隐藏详情 ^ SyntaxError:无效的语法 – user1849106

+0

看起来您没有正确安装硒。你是否安装硒?或者只是下载它的代码的随机部分?这是一个完整的软件包。删除文件'C:\ Users \ Server \ Downloads \ selenium.py'并正确安装硒。另外,browser.page_source是一个字符串。它不需要'read()'。 – aychedee