如何刮掉amazon.com

时间:2017-08-24 14:08:57

标签: python amazon-web-services web-scraping beautifulsoup

我想用Python(3.5)和BeautifulSoup4从'https://www.amazon.com/gp/goldbox'获取第一个报价。

我认为这会引用它:

import bs4 as bs
import urllib.request

sauce = urllib.request.urlopen('https://www.amazon.com/gp/goldbox').read()
soup = bs.BeautifulSoup(sauce, 'lxml')

for div in soup.find_all('div', class_='a-section a-spacing-none tallCellView gridColumn4 singleCell', id='100_dealView_0'):
    print(div)

但显然它不打印任何参考/代码......为什么?

源代码: enter image description here

2 个答案:

答案 0 :(得分:0)

产品信息不会直接进入html结构。它位于一个脚本中,然后传递给执行某些javascript的DOM。

我现在不知道如何使用汤来获取这些信息,但我会使用类似的东西:

$ pip install parsel

from parsel import Selector
import urllib.request
import re
import json

sauce = urllib.request.urlopen('https://www.amazon.com/gp/goldbox').read()
sel = Selector(unicode(a, 'utf-8'))
script = sel.xpath('//script[contains(., "dcsServerResponse")]').extract_first()
obj = re.search(r'dcsServerResponse   : ({.+}),\n    dealViewConfig', script, re.DOTALL).group(1)
json_response = json.loads(obj)

# now iterate the product deals
for k,v in json_response['dealDetails'].items():
    # do whatever you want with the information.

答案 1 :(得分:0)

好的,谢谢你的回答。

一些帮助我并可能对您有所帮助的链接(如果您有同样的问题)。 https://www.youtube.com/watch?v=FSH77vnOGqU

最终我得到了一个selenium-phantomJS无头浏览器。 Python browser emulator with JS support

干杯!