在view source页面保存下来的网页源码和保存网页得到的源码不同
前言
以前抓网页都是直接requests+bs4直接刚的,今天想拿一下拉钩的数据,就继续按照以下步骤来了:
- 先找个想爬的网页,然后写解析功能
- 批量爬,然后解析
- 入库
探究
结果发现行不通了,用bs4去解析,结果连title都拿不到,而网页源码里明明是有的!于是用浏览器打开网页然后view source,在view source页面点击存储为文件,然后用vscode打开保存的网页,进行对比。发现,tmd内容居然不一样……好多标签在保存的网页中根本看不到。
原因
想一下原因,肯定是js造成的。于是又搜了一下这种现象,得知:
保存源代码”是对源代码完整的保存下来,包括上面的图片链接,超链接的指向,都完完整整按照原本的样式保存下来了。并没有保存图片或者其他的一些文件。 而另存为的时候由浏览器(IE)自动生成一个和保存的网页文件名 + .files的文件夹,该文件夹中保存了网页上面所有的图片及一些外部链接CSS、Js脚本,并自动对网页上的链接进行修改,指向以网页文件名+.files的文件夹,这样就看其来整个网页是完整保存下来了。
原来是浏览器的处理过程导致的,view source就是真的只能看到源代码里,未经浏览器处理的代码…有些非静态的东西,自然得等加载出来后才能看到…唔
在view source页面保存下来的网页源码和保存网页得到的源码不同的更多相关文章
- source insight 保存时删除多余空格,去除多余空格 space tab键
source insight 保存时删除多余空格,去除多余空格 space tab键 摘自:https://blog.csdn.net/lanmanck/article/details/8638391 ...
- python 将页面保存为word
将博客或者留言页面保存为word文档 -----------2016-5-11 14:40:04-- source:http://blog.csdn.net/how8586/article/detai ...
- 抓取Js动态生成数据且以滚动页面方式分页的网页
代码也可以从我的开源项目HtmlExtractor中获取. 当我们在进行数据抓取的时候,如果目标网站是以Js的方式动态生成数据且以滚动页面的方式进行分页,那么我们该如何抓取呢? 如类似今日头条这样的网 ...
- Android View转为图片保存为本地文件,异步监听回调操作结果;
把手机上的一个View或ViewGroup转为Bitmap,再把Bitmap保存为.png格式的图片: 由于View转Bitmap.和Bitmap转图片都是耗时操作,(生成一个1M的图片大约500ms ...
- Python3 Selenium WebDriver网页的前进、后退、刷新、最大化、获取窗口位置、设置窗口大小、获取页面title、获取网页源码、获取Url等基本操作
Python3 Selenium WebDriver网页的前进.后退.刷新.最大化.获取窗口位置.设置窗口大小.获取页面title.获取网页源码.获取Url等基本操作 通过selenium webdr ...
- HTML子页面保存关闭并刷新父页面
1.思路是子页面保存后,后台传递成功的js到前台. 2.js的原理是——子页面调用父页面的刷新 子页面 function Refresh() { window.parent.Re ...
- Selenium WebDriver-网页的前进、后退、刷新、最大化、获取窗口位置、设置窗口大小、获取页面title、获取网页源码、获取Url等基本操作
通过selenium webdriver操作网页前进.后退.刷新.最大化.获取窗口位置.设置窗口大小.获取页面title.获取网页源码.获取Url等基本操作 from selenium import ...
- 微信h5页面下拉露出网页来源的解决办法
微信h5页面下拉露出网页来源的解决办法:将document的touchmove事件禁止掉 //禁止页面拖动 document.addEventListener('touchmove', functio ...
- 二维码相关---java生成二维码名片,而且自己主动保存到手机通讯录中...
版权声明:本文为博主原创文章,未经博主credreamer 同意不得转载 违者追究法律责任. https://blog.csdn.net/lidew521/article/details/244418 ...
随机推荐
- 洛谷 P1141【BFS】+记忆化搜索+染色
题目链接:https://www.luogu.org/problemnew/show/P1141 题目描述 有一个仅由数字 0 与 1 组成的n×n 格迷宫.若你位于一格0上,那么你可以移动到相邻 4 ...
- UVa 11059 - Maximum Product 最大乘积【暴力】
题目链接:https://vjudge.net/contest/210334#problem/B 题目大意:Given a sequence of integers S = {S1, S2, . . ...
- (华中科大)江南雨烟 C++ STL 专栏
本文转载来自,华中科技大学江南雨烟的C/C++专栏部分STL剖析文章,以作学习之用. [1] [C++ STL学习之一]容器的共通能力和共通操作总结 [2] [C++ STL学习之二]容器vect ...
- Java开发笔记(九十一)IO流处理简单的数据压缩
前面介绍的文件I/O,不管是写入文本还是写入对象,文件中的数据基本是原来的模样,用记事本之类的文本编辑软件都能浏览个大概.这么存储数据,要说方便确实方便,只是不够经济划算,原因有二:其一,写入的数据可 ...
- Android摘抄总结
著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:葛小葛链接:http://www.zhihu.com/question/27069588/answer/38417756来源: ...
- Java获取系统日期时间
方法一:利用Calendar类来获取当前日期和时间,代码如下: /** * 获取系统时间 * @return */ public String getDate(){ Calendar calendar ...
- Revit API创建标注NewTag
start ; ) { eId = item; } ...
- R12.1.3 & R12.2.X 注册客户化应用
R12.2 官方出了运行补丁脚本就可以自动创建客户化应用,所以也把此补丁应用在 R12.1.3上验证一下其可行性,做出以下实验. 1.创建客户化应用账号CUX --login user system ...
- SharePoint 特殊用户标识
To get claim for All Authenticated Users in PS you need to use:$claim = New-SPClaimsPrincipal -Encod ...
- Android四大组件应用系列5——使用AIDL实现跨进程调用Service
一.问题描述 Android应用程序的四大组件中Activity.BroadcastReceiver.ContentProvider.Service都可以进行跨进程.在上一篇我们通过ContentPr ...