从源代码中隐藏的值 - 网络抓取 Python
Values Hidden From Source Code- Webscraping Python
我正在尝试网络抓取一个网站,当我浏览源代码时,我正在寻找的东西不存在。网站 http://www.providentmetals.com/2016-1-oz-canadian-silver-cougar.html,我正在寻找的是右上角表格中的价格。它说"1+",然后是价格。现在大约是 18.04 美元。当我使用 Web 开发人员工具"检查元素"时,我可以看到价格。使用美丽汤,我试图获取值,但它没有显示。这是粗略的代码。它根本不返回值
import res,bs4
url='http://www.providentmetals.com/2016-1-oz-canadian-silver.cougar.html'
res=requests.get(url)
soup=bs4.BeautifulSoup(res.text,'lxml')
elems=soup.findAll('class',{'table':'table table-striped border-light pricing data-table'})
#table name found from inspect element web dev tool
问题:如何找到隐藏的数据?您知道有什么方法可以使用 bs4/requests 来查找数据吗?我不擅长编码和网络抓取,所以任何帮助都会很好。
这些值不是隐藏的,它们是通过 Ajax 请求获取的,然后插入到页面的 DOM 中。这就是为什么您在浏览器中看到它们,而不是在页面的 HTML 中看到它们的原因。
您可以直接访问获取所需数据的 Ajax 请求。响应采用 JSON 格式,因此非常易于使用。您需要知道SKU,例如BBFS-04253。
网址为:http://www.providentmetals.com/services/products.php?type=product&sku=BBFS-04253
使用 requests
模块:
import requests
url = 'http://www.providentmetals.com/services/products.php'
params = {'type': 'product', 'sku': 'BBFS-04253'}
response = requests.get(url, params)
data = response.json()
>>> from pprint import pprint
>>> pprint(data)
[{u'as_low_as': {u'crypto_price': u'$18.22',
u'list_price': u'$18.78',
u'price': u'$18.03',
u'qty': 1,
u'to_tier': u' + '},
u'crypto_price': u'$18.22',
u'crypto_special_price': u'$0.00',
u'id': u'6034',
u'inStock': None,
u'list_price': u'$18.78',
u'list_special_price': u'$0.00',
u'name': u'2016 1 oz Canadian Silver Cougar | Predator Series',
u'price': u'$18.03',
u'sell_to_us': u'$16.69',
u'sku': u'BBFS-04253',
u'special_price': None,
u'status_allows_price': True,
u'stock_status_code': u'pre-sale',
u'tier_price': [{u'crypto_price': u'$18.22',
u'list_price': u'$18.78',
u'price': u'$18.03',
u'qty': 1,
u'to_tier': u' + '}]}]
print data['price']
因此,您可以直接访问价格和其他详细信息:
>>> data[0]['price']
u'$18.03'
>>> data[0]['name']
u'2016 1 oz Canadian Silver Cougar | Predator Series'
相关文章:
- 同源策略目的|用户数据与基本页面数据|客户端页面抓取
- VBA正在抓取不在HTML源文件中的生成内容
- 尝试使用Node.js动态路由从IMDB中抓取电影内容.但是在我的output.json文件中没有定义
- 如何从网站上抓取链接和图片
- 用jquery抓取图像SRC-attr
- Javascript Regex-从价格中抓取分隔符
- 使用网络服务器的IP地址而不是域名对其进行屏幕抓取
- Javascript:如何从URL中抓取片段并将其写入一些PHP
- 使用htmlunit抓取动态网页
- 如何抓取URL的一部分并将其粘贴到页面上的某个位置
- Html抓取网站加载错误的J汤Java
- 如何获取网站所有页面的链接以进行数据抓取
- 如何使用AJAX和JSON从一个页面抓取PHP变量到另一个页面
- 我如何从一个无限滚动的网站抓取图像,其中api是隐藏的,我无法通过使用Inspect Element获得它->网络
- 什么是处理JavaScript的最简单的网络抓取工具
- Python3网络抓取问题(关于JS)
- 从源代码中隐藏的值 - 网络抓取 Python
- 使用phantomjs或node从网站上抓取通过网络套接字流式传输的数据
- 网络抓取和承诺与节点
- 试图通过RingCentral通过网络抓取或通过电子邮件导出.csv生成自动的每日呼叫报告