Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Web抓取没有出现在“福汤”中的元素

Web抓取没有出现在“福汤”中的元素
EN

Stack Overflow用户
提问于 2020-07-23 11:48:47
回答 2查看 105关注 0票数 0

我正在尝试从Udacity目录网站中提取所有的课程信息。

当我试图从任何课程页面提取价格时,它会返回一个null months access和一个空值,如下所示:

示例中的数据分析课程

代码语言:javascript
运行
AI代码解释
复制
page_req = requests.get('https://www.udacity.com/course/data-analyst-nanodegree--nd002')
page_soup = BeautifulSoup(page_req.content, 'html.parser')
page_soup.find('div', class_='price-cards').find('div', class_='price-card bundle')
代码语言:javascript
运行
AI代码解释
复制
<div class="price-card bundle"><div class="flag"><p class="flag__text">10% OFF</p></div><div 
class="price-info"><div class="price-info__deal" hidden="">BEST DEAL</div><div class="title h6">null 
months access</div><div class="price"><span class="price__payable"><span class="skeleton 
skeleton__default"><span style="width:100px"> </span></span></span><span class="price__label"><span 
class="current-price"> per month</span></span></div><p class="blurb">Start learning today! Switch to 
the monthly price afterwards if more time is needed.</p><div class="enroll-button__container"></div> 
</div></div>

那么,我怎样才能得到课程的价格呢?

注:价格从一个国家到另一个国家的变化。(即:在美国是美元,意大利是欧元)

EN

回答 2

Stack Overflow用户

发布于 2020-07-23 22:16:31

浏览现代网站最简单的方法就是观察网络流量。您可以通过打开浏览器开发工具或按Ctrl + Shift + I来做到这一点。选择网络,标记保存日志并禁用缓存。下一步只过滤XHR。重新加载页面并观察网络调用。

当我调用您的URI时,web浏览器调用URI。用Python模拟该调用:

代码语言:javascript
运行
AI代码解释
复制
from requests import Session

with Session() as httpx:

    URI = 'https://braavos.udacity.com/api/prices'

    params = dict(item='urn:x-udacity:item:nd-unit:10153',
                  price_sheet='regular',
                  currency='USD',
                 )
    response = httpx.get(url=URI, params=params)
    data = response.json()

print(type(data)) # dict
print(data) # dict and thus you can access data as you would dicts

# examples
print(data['results'][0]['payment_plans']['upfront_recurring']['description'])
# 'one time payment of $1,436 USD, followed by $399 USD every 1 month'

print(data['results'][0]['payment_plans']['recurring']['description'])
# '$399 USD every 1 month'

票数 1
EN

Stack Overflow用户

发布于 2020-07-23 21:30:26

试试下面的脚本。我已经为https://www.udacity.com/course/data-analyst-nanodegree--nd002实现了脚本,使用了API方式,这是从端点获取数据的最佳方法之一。您可以通过签入开发人员工具的网络部分,只需按CTRL+SHIFT+I和XHR上的网络过滤器来查看所有API调用即可。使用请求,您可以访问API,它将返回必须转换为JSON格式的结果。

使用API url请求的好处:

  1. 更少的代码。
  2. 可靠而少的错误。
  3. 反应要快得多。
  4. 很容易接近。

如果您查看脚本,它现在正在提取付款计划,您想要刮刮,循环和前期循环。同样,您也可以访问JSON结果中的任何内容,如:促销、原始价格等。此外,我还制作了网址动态,您可以传递任何国家货币的缩写,它会给出结果。例如:-对于美国,我已经通过了美元,对于意大利或欧洲,您可以在capital 中的货币变量中传递EUR

代码语言:javascript
运行
AI代码解释
复制
import json
import requests
from urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

def scrape_prices():    

    currency = 'USD'
    url = 'https://braavos.udacity.com/api/prices?item=urn:x-udacity:item:nd-unit:10153&price_sheet=regular&anonymous_id=ae9be6e5-97af-48ee-ab3d-63456a8cb38f&currency=' + currency 
    session = requests.Session()
    response = session.get(url,verify=False)
    result = json.loads(response.text) 
    extracted_payment_plans_recurring = result['results'][0]['payment_plans']['recurring']
    extracted_payment_plan_upfront = result['results'][0]['payment_plans']['upfront_recurring']
    print('-' * 100)
    print('Payment Plans Recurring: ',extracted_payment_plans_recurring)
    print('-' * 100)
    print('Payment Plans Up front Recurring: ',extracted_payment_plan_upfront)
    print('-' * 100)

定期付款计划的结果

预先定期付款计划的结果

来自UDACITY网站的API url

JSON价格结果

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63062062

复制
相关文章
Katalon Studio元素抓取功能Spy Web介绍
Katalon Studio提供了Web Object Spy功能,该功能可以主动抓取元素及其属性。同时,内置的验证和Highlight显示功能可以进一步验证元素定位的准确性。用户使用Web Object Spy可以随心所欲的抓取应用程序界面中的任何元素及其属性,并且保存到元素对象库中。备注:博主使用Katalon Studio当前最新版本:5.5.0
Altumn
2019/10/21
2.3K0
Katalon Studio元素抓取功能Spy Web介绍
Python之抓取网页元素
import urllib.request from bs4 import BeautifulSoup url = "http://www.wal-martchina.com/walmart/store/14_hubei.htm" user_agent = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.134 Safari/537.36" request = u
py3study
2020/01/09
2.7K0
Web 隐藏技术:几中隐藏 Web 中的元素方法及优缺点
在 Web 开发中出于多种原因,我们需要隐藏元素。 例如,一个按钮应该在移动中可见,而在桌面视口中隐藏。 或者,在移动设备上隐藏但要在桌面上显示的导航元素。 隐藏元素时有三种不同的状态:
前端小智@大迁世界
2020/05/18
5.3K0
Web 隐藏技术:几中隐藏 Web 中的元素方法及优缺点
Web Components 并没有你想象中的那么复杂
我参加了一个技术交流大会,看到一些大佬演示 Web Components,感觉它非常漂亮,但是好像有点复杂过头了 —— 用近千行的 JavaScript 代码来表示个位数行数的 HTML 代码。大佬们总是不可避免地掩盖 Web Components 需要大量的 JavaScript 代码才能正常运行的这个问题,或者深入一些看起来无关紧要的细节。到了这个环节我的目光就开始变得呆滞,开始发呆。
童欧巴
2021/03/18
5780
Web Components 并没有你想象中的那么复杂
汤晓鸥教授:人工智能让天下没有难吹的牛!
10月12日,中国科学院深圳先进技术研究院副院长、中国香港中文大学教授汤晓鸥教授表示,阿里讲“让天下没有难做的生意”,做人工智能是讲“让天下没有难吹的牛”。 今天我讲的题目是《人工智能的云中漫步》。人工智能其实我也听了很多人讲,我自己也讲了很多,我觉得总结起来做人工智能的跟阿里的理念其实非常相似。阿里是讲“让天下没有难做的生意”,做人工智能的是讲“让天下没有难吹的牛”:)。 这两天大会听大家讲了半天人工智能,讲了半天的云,一直到今天为止,一直到现在为止,我们其实一直没有看到真正的云
IT派
2018/03/28
1.2K0
汤晓鸥教授:人工智能让天下没有难吹的牛!
如何使用python进行web抓取?
本文摘要自Web Scraping with Python – 2015 书籍下载地址:https://bitbucket.org/xurongzhong/python-chinese-library/downloads 源码地址:https://bitbucket.org/wswp/code 演示站点:http://example.webscraping.com/ 演示站点代码:http://bitbucket.org/wswp/places 推荐的python基础教程: http://www.divei
CDA数据分析师
2018/02/05
5.7K0
如何使用python进行web抓取?
CSS 为没有内容的元素设置样式 :not(:empty)
当我们想要根据元素内部是否有内容来显示特定的样式时 我们可以使用 :not 与:empty 结合来实现这个效果 代码如下 .handle_menu_content:not(:empty){ width: 90px; position: fixed; z-index: 999999; top: 0; z-index: 9999999; left: 38px; background: #fff; border-r
拿我格子衫来
2022/01/24
1.9K0
Web安全之BurpSuite抓取HTTPS请求
https://portswigger.net/burp/help/proxy_options_installingCAcert.html
Jetpropelledsnake21
2019/02/15
16.1K0
Web元素定位工具-ChroPath
3、ChroPath支持iframe,多选择器生成,动态属性,使用自定义属性生成相对xpath,自动化脚本步骤生成。
沈宥
2022/05/10
2.5K0
Web元素定位工具-ChroPath
伪元素的作用_获取iframe中的元素
获取网页源代码也获取不了这些动态渲染的数据 所以用简单的,但是有点麻烦的方法 使用selenium执行js,或者直接在浏览器里面执行js
全栈程序员站长
2022/11/04
7.2K0
伪元素的作用_获取iframe中的元素
web页面中快速找到html对应元素两种
2、在打开的控制窗口左上角有个  箭头 按钮,点击它之后,此时将鼠标移动到web页面上的元素,同时在控制窗口中就会自动定位到鼠标所指向的元素,这样方便在写代码时快速找到对应元素
py3study
2020/01/19
2.2K0
web页面中快速找到html对应元素两种
News Co-Occurrences:关注同时出现在新闻中的股票
量化投资与机器学公众号 QIML Insight——深度研读系列 是公众号今年全力打造的一档深度、前沿、高水准栏目。
量化投资与机器学习微信公众号
2021/07/07
8260
News Co-Occurrences:关注同时出现在新闻中的股票
五福背后的 Web 3D 引擎开源
相信大家已经体验了今年支付宝五福的活动,无论是今年的五福首页还是打年兽游戏都是由蚂蚁互动图形引擎(代号:Oasis Engine)驱动的。
前端老王
2022/09/22
2.1K0
五福背后的 Web 3D 引擎开源
教程|Python Web页面抓取:循序渐进
今天,要为大家带来Python中Web页面的抓取教程。许多人看到代码就觉得头疼或是特别困难,其实Web爬虫是非常简单的。Python是面向对象的语言,而且与其他语言相比,类和对象都更容易操作,所以是Python Web爬虫最简单的入门方法之一。此外,还有许多库能简化Python Web爬虫工具的构建流程。
Oxylabs
2020/06/30
9.4K0
教程|Python Web页面抓取:循序渐进
web爬虫-用RoboBrowser登录和抓取数据
RoboBrowser是一个简单的Python库,用于在没有独立Web浏览器的情况下浏览Web。RoboBrowser可以获取页面,单击链接和按钮,然后填写并提交表单。如果您需要与没有API的Web服务进行交互,RoboBrowser可以提供很好的帮助。
XXXX-user
2019/07/23
2.8K0
抓取html页面中的json数据
抓取html页面中的json数据
Java架构师必看
2021/08/03
3.4K0
HTML中的内联元素与块级元素
文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书
Tyan
2022/05/09
3.4K0
Struts2学习---简单的数据校验、访问Web元素 1.简单的数据校验访问Web元素
1.简单的数据校验 在action里面我们已经给出了一个数据校验: public String execute() { if(user.getUsername().equals("username")&&user.getPassword().equals("password")) { return SUCCESS; } return ERROR; } 这里是action的传送门 上面代码大概就是如果用户名为“username
MindMrWang
2018/04/16
9380
点击加载更多

相似问题

Web抓取Python美丽汤

23

Python Web抓取;美汤

30

美丽的汤Web抓取Python

111

Python Web抓取:美丽的汤

32

web抓取python漂亮汤,javascriot

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档