Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从网上抓取谷歌航班价格

从网上抓取谷歌航班价格
EN

Stack Overflow用户
提问于 2019-03-28 13:39:54
回答 3查看 6.7K关注 0票数 6

我正在努力学习如何使用python库BeautifulSoup,例如,我想在Google航班上节省一次航班的价格。因此,我连接到谷歌航班,例如在此链接,我想得到最便宜的航班价格。

因此,我将在div中得到这个类的值“gws-比对-结果_巡回-价格”(如图中所示)。

下面是我编写的简单代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from bs4 import BeautifulSoup
import urllib.request

url = 'https://www.google.com/flights?hl=it#flt=/m/07_pf./m/05qtj.2019-04-27;c:EUR;e:1;sd:1;t:f;tt:o'
page = urllib.request.urlopen(url)
soup = BeautifulSoup(page, 'html.parser')
div = soup.find('div', attrs={'class': 'gws-flights-results__itinerary-price'})

但是得到的div有类NoneType

我也试着用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
find_all('div') 

但在我以这种方式发现的所有div中,没有我感兴趣的div。有人能帮我吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-03-28 13:49:43

看起来javascript需要运行,所以使用像selenium这样的方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from selenium import webdriver
url = 'https://www.google.com/flights?hl=it#flt=/m/07_pf./m/05qtj.2019-04-27;c:EUR;e:1;sd:1;t:f;tt:o'
driver = webdriver.Chrome()
driver.get(url)
print(driver.find_element_by_css_selector('.gws-flights-results__cheapest-price').text)
driver.quit()
票数 7
EN

Stack Overflow用户

发布于 2019-03-28 14:06:58

很高兴你正在学习网络抓取!因此,您获得NoneType的原因是因为您正在抓取的网站动态加载内容。当请求库获取url时,它只包含javascript。这个类的div“gws飞行-结果_巡回-价格”还没有呈现出来!因此,这是不可能的刮方法,你是用来刮这个网站。

但是,您可以使用其他方法,例如使用selenium或splash等工具获取页面,以呈现javascript,然后解析内容。

票数 2
EN

Stack Overflow用户

发布于 2019-03-28 14:00:19

BeautifulSoup是提取部分HTML或XML的一个很好的工具,但在这里,您只需要将url获取到另一个JSON对象的get请求。

(我现在不在电脑旁边,明天可以用一个例子来更新。)

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

https://stackoverflow.com/questions/55407247

复制
相关文章
打开Mac OSX原生的NTFS功能
很多同学都会为如何在Mac下写入NTFS格式的磁盘而感到困惑,因为默认情况下,把一个NTFS格式的磁盘插入到Mac里,是只能读不能写的。用起来肯定很郁闷,很多同学也因此把移动硬盘分成了双分区,一个NTFS,一个HFS。其实在Mac下完全是可以写NTFS磁盘的
twelvecoder
2021/12/24
1.2K0
JavaScript实现超时调用的功能
<script type="text/javascript"> function showMsg(){ alert("1秒之后会有新的提示"); //延时调用,只调用一次 setTimeout(function(){ alert("我就是惊喜"); }, 1000)//表示延时1000毫秒,可以改成其他的时间段 } </script> </head> <body> <input type="button" value="点击我,有惊喜" οnclick="showMsg()"> </body>
小小鱼儿小小林
2020/06/23
5450
Swift基础 功能(Functions)
翻译自:https://docs.swift.org/swift-book/LanguageGuide/Functions.html
郭顺发
2023/07/17
1570
用代码旋转屏幕
代码 1 btnRotate.setOnClickListener(new OnClickListener() {  2             @Override  3             public void onClick(View v) {  4                 int r = Math.abs(getRequestedOrientation());  5                 Log.d("DEBUG",Integer.toString(r));  6       
用户3135539
2018/09/12
1.5K0
增加MATLAB屏幕截图功能
借助Java或者Python实现截取屏幕指定矩形区域 Java实现 function outputImage=screenCapture(subRegion,outputFile) robo = java.awt.Robot; if ~exist('subRegion','var') || isempty(subRegion) %获取屏幕尺寸 t = java.awt.Toolkit.getDefaultToolkit(); rectangle = java.awt.Rectangl
万木逢春
2019/04/30
1.7K0
Python实现屏幕取色器功能
代码主要思路:首先获取全屏幕截图,在截取的图像上获取指定位置的像素颜色值并转换为十六进制表示形式。 遗憾之处:这个程序的部分代码比较长,在手机上查看时这些换行可能会影响阅读质量,记得之前有个朋友提过建议让我加上代码块,不过我试了试,微信公众号后台的编辑器不支持这个功能,网上找了几个编辑器也不太好用。如果有朋友知道简单易用的支持代码块的编辑器还请推荐一下,谢谢! import os from time import sleep import tkinter import tkinter.filedialog
Python小屋屋主
2018/04/17
7.8K3
屏幕旋转时调用PopupWindow update方法更新位置失效的问题及解决方案
   接到一个博友的反馈,在屏幕旋转时调用 PopupWindow 的 update 方法失效。使用场景如下:在一个 Activity 中监听屏幕旋转事件,在Activity主布局文件中有个按钮点击弹出一个 PopupWindow,另外在主布局文件中有个 ListView。测试结果发现:如果 ListView 设置为可见(visibile)的话,屏幕旋转时调用的 update 方法无效,如果 ListView 设置为不可见(gone)或者直接删除的话,屏幕旋转时调用的update方法就生效。下面先展示两种情况的效果图对比。
用户1155943
2018/07/31
1.2K0
屏幕旋转时调用PopupWindow update方法更新位置失效的问题及解决方案
Mac OSX 给现有的应用追加基于文档的功能
在Xcode中创建Cocoa Application 工程时,通常有两种选择类型:<code>基于文档的Application</code> 和<code>非文档的Application</code>,具体是哪一种类型,关键在于创建工程的时候,你是否选中下图中的<code>Create Document-based Application</code>选项:
代码行者
2018/08/23
6450
Mac OSX 给现有的应用追加基于文档的功能
屏幕旋转时调用PopupWindow update方法更新位置失效的问题及解决方案
用户1155943
2018/01/04
1.9K0
屏幕旋转时调用PopupWindow update方法更新位置失效的问题及解决方案
Docker / OSX快速入门
Docker(容器技术)始于2013年,自那时起我便经常可以看到有关docker的消息。之前我已经尝试过docker的入门例子,但我觉得自己没有真正理解docker技术的价值所在以及docker容器是如何运行的。在这周,当我花了一些时间去研究docker之后,发现它并没有我之前想得那样神秘和复杂。
hzr
2018/01/17
4.6K0
Docker / OSX快速入门
TRTC iOS 屏幕分享功能实践(二)
上一篇介绍了iOS系统屏幕录制的实现方案,接下来我们介绍一下腾讯TRTC SDK的接入方案。
GF
2020/11/06
1.8K0
iOS开发常用之摄像照相视频音频处理
摄像照相视频音频处理 SCRecorder - SCRecorder短视频录制。 VideoPushDemo - 视频剪辑视频特效制作1 视频特效制作2。 LLSimpleCamera - 一款简单的,可自定义的iOS摄像头控件,摄像头。 EZAudio - EZAudio是一个iOS和OSX上简单易用的音频框架,根据音量实时显示波形图,基于Core Audio,适合实时低延迟音频处理,非常直观。中文介绍,官网。 ffmpeg - ffmpeg官网,FFmpeg在iOS上完美编译。 V
GuangdongQi
2019/02/22
2.8K0
Install Scrapy on OSX|mac OSX 上安装Scrapy[SYN:gejoin.com]
顺利的话,一句命令搞定: sudo pip install Scrapy OSX还是需要额外一些包或升级的,包括:
gigiwangs
2019/03/01
7940
Mac OSX安装MongoDB
MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是可以应用于各种规模的企业、各个行业以及各类应用程序的开源数据库。作为一个适用于敏捷开发的数据库,MongoDB的数据模式可以随着应用程序的发展而灵活地更新。与此同时,它也为开发人员 提供了传统数据库的功能:二级索引,完整的查询系统以及严格一致性等等。 MongoDB能够使企业更加具有敏捷性和可扩展性,各种规模的企业都可以通过使用MongoDB来创建新的应用,提高与客户之间的工作效率,加快产品上市时间,以及降低企业成本。
xiangzhihong
2022/11/30
8540
[Quartz笔记]玩转定时调度
本文介绍了如何使用Quartz Scheduler进行任务调度,包括Cron表达式、任务定义、调度策略、持久化等。同时,还介绍了Quartz与其他技术的集成,如Spring、MyBatis等。
静默虚空
2018/01/05
9620
TRTC iOS 屏幕分享功能实践(一)
实现直播过程中共享屏幕分为两个步骤:屏幕数据采集和流媒体数据推送。前对于iOS来说,屏幕采集需要系统的权限,受制于iOS系统的限制,第三方app并没有直接录制屏幕的权限,必须通过系统的功能来实现。不同的版本之间有一些差异,下面做个简单的介绍。(注:由于iOS 10和之前的系统只支持App内录制屏幕,所以只做简单的介绍,不做详细说明)
GF
2020/11/04
3.1K0
点击加载更多

相似问题

用SWIFT编写OSX内核扩展?

13

用Swift实现OSX中的TableView

10

Swift iOS -在屏幕旋转时调整collectionLayout大小

11

OSX/Swift:在建立/恢复互联网连接时调用函数

12

使用Swift禁用OSX的睡眠/屏幕保护程序

151
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文