我正在从网站上提取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浏览器,并返回错误。我该如何解决这个问题?
答案 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