无法让Python下载网页源代码:“不支持浏览器版本”

时间:2015-06-01 18:29:23

标签: python html browser urllib2

所以我正在尝试编写一个可以在Python 2.7中下载网页源代码的程序。

代码如下所示:

<Legend>
  {newColumns.map(function (column) {
    return (
      <Legend.Item name={column.name}
        color={column.color}
        click={this.onLegendClick}
        mouseOut={this.onLegendMouseOut}
        mouseOver={this.onLegendMouseOver}/>
    );
  }.bind(this))}
</Legend>

然而,当我打开输出文件时,缺少源代码的主要块,而是有一条消息说这个版本的浏览器不受支持,我应该得到另一个。

有没有办法可以避免这个问题?

1 个答案:

答案 0 :(得分:2)

查看您列出的网址,我执行了以下操作:

  1. 使用wget下载页面
  2. 在ipython中使用了urllib并下载了页面
  3. 使用了chrome并仅保存了网址
  4. 所有3给了我相同的结果文件(相同的大小,相同的内容)。

    这可能是因为我没有登录,但我确实看到该网站包含大量可以呈现网页的JavaScript。

    我知道您正在尝试使用urllib - 但鉴于上述情况,我会使用selenium并详细说明如何开始使用它。这个例子需要selenium和phantomjs,但你可以用selenium和firefox做同样的事情。

    from selenium import webdriver
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    
    
    browser_agent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"
    
    url = 'https://scrap.tf/stranges/47'
    
    dcap = {}
    mydriver = None
    
    dcap = dict(DesiredCapabilities.PHANTOMJS)
    dcap["phantomjs.page.settings.userAgent"] = browser_agent
    mydriver = webdriver.PhantomJS(desired_capabilities=dcap)
    mydriver.implicitly_wait(30)
    mydriver.set_window_size(1366,768)
    
    mydriver.get(url)
    title = mydriver.title
    print (title)
    page = mydriver.page_source
    # debugging -- get screen shot to see how we look
    mydriver.get_screenshot_as_file('/data/screen/test.png')
    

    这会下载页面并正确呈现所有javascript,但您需要登录到需要进行一些互动的Steam。

    您可以通过检查Chrome或Firefox中的页面,查找css选择器或xpath以及使用webdriver find_element函数来确定需要执行的操作。

    这也允许按键和点击。