在爬取12306站点名时发现,BeautifulSoup检索不到station_version的节点

因为script标签在</html>之外,如果用‘lxml’解析器会忽略这一部分,而使用html5lib则不会。

  ...
1 <!-- 购物车 -->
<div style="display: none;" class="buy-cart"><div class="cart-hd"><span class="num">0</span>
</div>
<div class="cart-bd" style="display: none;"><div class="cart-bd-top"><h3><span id="hbTrainDate">候补购票需求列表</span>
<a id="hbClear" href="javascript:void(0)" shape="rect">[清空]</a>
</h3>
<a href="javascript:void(0)" class="close" shape="rect">×</a>
</div>
<div class="cart-bd-con"><ul class="cart-tlist"></ul>
</div>
<div class="cart-bd-ft"><p class="cart-ft-tips">1、候补订单需求中可包含2个相邻乘车日期,每个乘车日期可包含2个不同“车次+席别”的组合需求。</p>
<p class="cart-ft-tips">2、排位是指您的订单在待兑现订单中的位置。当前排位仅供参考,实际排位以支付成功后为准。</p>
<a id="hbSubmit" href="javascript:void(0)" class="btn72 fr" shape="rect">添加乘客</a>
</div>
</div>
</div>
</body>
</html>  # 用‘lxml’得到的汤到此为止
<script type="text/javascript" src="/otn/resources/js/framework/station_name.js?station_version=1.9115" xml:space="preserve"></script>
<script type="text/javascript" src="/otn/resources/js/framework/favorite_name.js" xml:space="preserve"></script>
<script type="text/javascript" src="/otn/resources/merged/queryLeftTicket_end_js.js?scriptVersion=1.9158" xml:space="preserve"></script>
  ...
 1 >>> url = "https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc&fs=%E4%B8%87%E5%B7%9E,WYW&ts=%E8%A5%BF%E5%AE%89,XAY&date=2019-11-05&flag=N,N,Y"
2 ... response = requests.get(url, timeout=10)
3 ... response.encoding = 'utf-8'
4 ... lxml = bs(response.text, 'lxml')
5 ... html5lib = bs(response.text, 'html5lib')
6 ... response.close()
7 >>> lxml.find_all(src=re.compile(".*station_version.*"))
8 []
9 >>> html5lib.find_all(src=re.compile(".*station_version.*"))
10 [<script src="/otn/resources/js/framework/station_name.js?station_version=1.9115" type="text/javascript" xml:space="preserve"></script>]

python BeautifulSoup4 获取 script 节点问题的更多相关文章

  1. python爬虫beautifulsoup4系列4-子节点

    前言 很多时候我们无法直接定位到某个元素,我们可以先定位它的父元素,通过父元素来找子元素就比较容易 一.子节点 1.以博客园首页的摘要为例:<div class="c_b_p_desc ...

  2. python爬虫beautifulsoup4系列4-子节点【转载】

    本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/beautifulsoup4/ 前言 很多时候我们无法直接定位到某个元素,我们可以先定位 ...

  3. 【python+beautifulsoup4】Beautifulsoup4

    Beautiful soup将复杂HTML文档转换成一个复杂的属性结构,每个节点都是python对象,所有对象可归纳为4种Tag,NavigableString,BeautifulSoup,Comme ...

  4. jQuery 获取当前节点的html包含当前节点的方法

    在开发过程中,jQuery.html() 是获取当前节点下的html代码,并不包含当前节点本身的代码,然后我们有时候确需要,找遍jQuery api文档也没有任何方法可以拿到. 看到有的人通过pare ...

  5. python BeautifulSoup4

    source form  http://www.bkjia.com/ASPjc/908009.html 昨天把传说中的BeautifulSoup4装上了,还没有装好的童鞋,请看本人的上一篇博客: Py ...

  6. JavaScript之怎样获取元素节点

    JavaScript获取元素节点一共有三种方法,分别是通过元素ID.通过标签名字和通过类名字来获取: 1.通过元素ID属性的ID值来获得元素对象-getElementById() DOM提供了一个名为 ...

  7. zTree实现获取一级节点数据

    zTree实现获取一级节点数据 1.实现源码 <!DOCTYPE html> <html> <head> <title>zTree实现基本树</t ...

  8. vue的数据双向绑定和ref获取dom节点

    vue是一个MVVM的框架 业务逻辑代码即js部分是model部分, html是view部分. 当model改变的时候,view也会改变 view 改变是,model也会改变 <template ...

  9. 原生JS获取DOM 节点到浏览器顶部的距离或者左侧的距离

    关于js获取dom 节点到浏览器顶/左部的距离,Jquery里面有封装好的offset().top/offset().left,只到父级的顶/左部距离position().top/position() ...

随机推荐

  1. python学习之【第十二篇】:Python中的迭代器

    1.为何要有迭代器? 对于序列类型:字符串.列表.元组,我们可以使用索引的方式迭代取出其包含的元素.但对于字典.集合.文件等类型是没有索引的,若还想取出其内部包含的元素,则必须找出一种不依赖于索引的迭 ...

  2. vue2-preview引用时报错解决办法

    1.报错信息 在完全按照官方文档安装引入vue2-preview时出现报错,报错信息如下: 从图中标记处可以知道出错是因为在\node_modules\_vue2-preview@1.0.2@vue2 ...

  3. 映客直播软开校招岗(go语言)

    问题: 笔试: 比较简单,有一道题比较深刻: 内存1G,需要计算1G的数据排序,哪种排序方法效率最低,当时选的是冒泡,因为涉及到频繁的数据交换,其实应该是归并,因为归并不是原地排序,多占用的内存空间, ...

  4. 打包上传被拒 Guideline 2.5.1 - Performance - Software Requirements

    打包上传被拒 Guideline 2.5.1 - Performance - Software Requirements 在项目中全部搜索:prefs:root 找到后,把这个私有的 NSURL *u ...

  5. 关于MXNet

    关于人工智能,机器学习,深度学习 三者关系:从宏观到微观. 机器学习是人工智能的一部分,深度学习是机器学习的一部分. 基础:大数据. 关于深度学习 深度学习基于神经网络, 关于神经网络:通过叠加网络层 ...

  6. (C#)WPF:Margin属性和Padding属性的介绍

    1.在进行界面设计时,Margin 和Padding都是对边距进行限制的,其区别在于“一个主外,一个主内”. Margin (边缘)是约束控件与容器控件的边距,设置值分别代表左上右下,使用 Margi ...

  7. web前端面试经常遇得到的题型

    1.position的值, relative和absolute分别是相对于谁进行定位的? § absolute :生成绝对定位的元素, 相对于最近一级的 定位不是 static 的父元素来进行定位. ...

  8. Redis入门,对Redis的理解和基本环境搭建及操作

    Redis入门使用 参考:https://blog.csdn.net/hellozpc/article/details/81267030 一).缓存的用途举例 1.前端页面广告的数据无需每次查询后台系 ...

  9. 基于HTTP协议的WAF绕过

    一,畸形包绕过 1.先关闭burpsuite长度更新,为get请求,先使用bp的method转换为POST请求 2.get请求中空格使用%20代替,Connection改为keep-alive 二,分 ...

  10. Python爬虫之Selenium的常用方法

    1.单个元素的选取 find_element_by_id      通过标签属性Id查找元素 find_element_by_name      通过标签属性name查找元素 find_element ...