【发布时间】:2018-06-16 19:00:23
【问题描述】:
我最近开始用 Python 编写网页抓取代码。仅使用 requests 和 BeautifulSoup,我就能做很多事情。然后,当我尝试 Staples 网站时,我在 Chrome 的开发人员工具中找不到显示的元素。我做了一些研究,并认为它可能是 JavaScript。我尝试了 ghost.py 和 QtWebKit,他们有这个 SSL 问题。然后我尝试了 Selenium + PhantomJS。
executable_path = os.path.dirname(os.path.abspath(__file__)) + '\\phantomjs.exe'
browser = webdriver.PhantomJS(executable_path=executable_path)
browser.get(url)
html = browser.page_source
browser.save_screenshot('./abc.png')
screenshot1 与 Chrome 中的 screenshot2 不同。 在 Chrome 中,PhantomJS 浏览器中没有显示价格块。我也试过自定义的header,没有区别。
headers = { 'Accept':'*/*',
'Accept-Encoding':'gzip, deflate, sdch',
'Accept-Language':'en-US,en;q=0.8',
'Cache-Control':'max-age=0',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/48.0.2564.116 Safari/537.36'}
for key, value in enumerate(headers):
capability_key = 'phantomjs.page.customHeaders.{}'.format(key)
webdriver.DesiredCapabilities.PHANTOMJS[capability_key] = value
我想从网页上抓取价格。是否有一些 Selenium 设置可用于获取与常规浏览器相同的网页?
【问题讨论】:
标签: python selenium web-scraping phantomjs viewport