如何使用python Web抓取并使用bs4访问<script>

时间:2018-07-16 20:47:44

标签: python web beautifulsoup scrape

我正在尝试从“ https://www.deadstock中获取数据.ca / products / adidas-futurepacer-grey-one

我希望能够读取如下所示的变体数据:

  
 

我认为我的定位不正确。我希望代码能够打印所有的“ id”:数字。到目前为止,这是我的代码,对于bs4来说仍然是新手,但是可以提供任何帮助。谢谢

 将bs4导入为bs
导入urllib.request
导入lxml

链接= urllib.request.urlopen('https://www.deadstock.ca/products/adidas-futurepacer-grey-one').read()

汤= bs.BeautifulSoup(link,'lxml')

对于soup.find_all('script')中的变体:
    打印(变体)
 

我在@Andrej Kesely答案的顶部尝试了类似的方法。

 表示数据['variants']中的ID:
大小= id ['variants'] ['option1']
variantid = id ['variants'] ['id']

打印(尺寸)
打印(变体)
 

虽然它返回一个keyerror,但我只希望它显示所有ID

1 个答案:

答案 0 :(得分:0)

对于此网站,您需要定位let shareText = "Check out this app! http://example.com" 。它包含具有所有变体的JSON:

id="ProductJson-product-template"

打印:

import bs4 as bs
import urllib.request
import json

link = urllib.request.urlopen('https://www.deadstock.ca/products/adidas-futurepacer-grey-one').read()

soup = bs.BeautifulSoup(link,'lxml')

variant = soup.find('script', id='ProductJson-product-template')
data = json.loads(variant.text)

print(json.dumps(data, indent=4, sort_keys=True))