3

我从网站中提取 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,但不适用于Tmart.com。不知怎的,Tmart 可以看到它不是网络浏览器,并返回错误。我怎样才能解决这个问题?

4

1 回答 1

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

于 2012-11-24T08:23:16.263 回答