python爬虫实例教程-python动态爬虫的实例分享
本文主要和大家分享python动态爬虫的实例分享,用Python实现常规的静态网页抓取时,往往是用urllib2来获取整个HTML页面,然后从HTML文件中逐字查找对应的关键字。如下所示:#encoding=utf-8import urllib2
url="http://mm.taobao.com/json/request_top_list.htm?type=0&page=1"up=urllib2.urlopen(url)#打开目标页面,存入变量upcont=up.read()#从up中读入该HTML文件key1='
但是,在动态页面中,所显示的内容往往不是通过HTML页面呈现的,而是通过调用js等方式从数据库中得到数据,回显到网页上。
以发改委网站上的"备案信息”(http://beian.hndrc.gov.cn/)为例,要抓取此页面中的某些备案项目。例如"http://beian.hndrc.gov.cn/indexinvestment.jsp?id=162518”。
那么,在浏览器中打开此页面:
相关信息都显示的很全了,但是如果按照之前的办法:up=urllib2.urlopen(url)
cont=up.read()
就抓取不到上述内容了。
我们查看一下这个页面对应的源码:
由源码可以看出,这个《备案确认书》属于"填空”形式的,HTML提供文字模板,js根据不同的id提供不同的变量,"填入”到文字模板中,形成了一个具体的《备案确认书》。所以单纯抓取此HTML,只能得到一些文字模板,而无法得到具体内容。
那么,该如何找到那些具体内容呢?可以利用Chrome的"开发者工具”来寻找谁是真正的内容提供者。
打开Chrome浏览器,按下键盘F12即可呼出此工具。如下图:
此时选中"Network”标签,在地址栏中输入此页面"http://beian.hndrc.gov.cn/indexinvestment.jsp?id=162518”,浏览器会分析出此次响应的全过程,而红框内的文件,就是此次响应中,浏览器和web后端的所有通信。
因为要获得不同企业对应的不同信息,那么浏览器发送给服务器的请求里面一定会有一个和当前企业id有关的参数。
那么,参数是多少呢?URL上有,是"jsp?id=162518”,问号表示要调用参数,后面跟的是id号即是被调用的参数。而通过对这几个文件的分析,很显然,企业信息存在于"indexinvestment.action”文件中。
然而,双击打开此文件并不能获得企业信息,而是一堆代码。因为没有对应的参数为它指明要显示第几号的信息。如图:
那么,应该如何将参数传递给它呢?这时我们仍旧看F12窗口:
"Header”一栏中明确地显示出了此次响应的过程:
对目标URL,用POST的方式,传递了一个id为162518的参数。
我们先手工操作一下。js是如何调用参数的呢?对,上面说过:问号+变量名+等号+变量对应的数字。也就是说,向"http://beian.hndrc.gov.cn/indexinvestment.action”这个页面提交id为162518的参数时,应该在URL后面加上
"?id=162518”,即
"http://beian.hndrc.gov.cn/indexinvestment.action?id=162518”。
我们把这个URL粘贴到浏览器中来看:
似乎有了点内容,可是都是乱码啊,怎么破?熟悉的朋友可能一眼就看出来,这是编码的问题。是因为响应回来的内容与浏览器默认的编码方式不同。只需要在Chrome右上角菜单——更多工具——编码——"自动检测”即可。(其实这是UTF-8的编码,而Chrome默认的是中文简体)。如下图:
好了,真正的信息源已经被挖出,剩下的就是用Python处理这些页面上的字符串,然后剪切、拼接,重新组成新的《项目备案书》了。
再然后使用for、while等循环,批量获取这些《备案书》。
正如"不论是静态网页,动态网页,模拟登陆等,都要先分析、搞懂逻辑,再去写代码”所说,编程语言只是一个工具,重要的是解决问题的思路。有了思路,再寻找趁手的工具去解决,就OK了。
以上就是python动态爬虫的实例分享的详细内容,更多请关注php中文网其它相关文章!
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
python爬虫实例教程-python动态爬虫的实例分享相关推荐
- 视频教程-Python开发全教程-Python
Python开发全教程 目前就职于中国唯品会做iOS开发工程师,在良师益友网,麦子学院任职iOS讲师,出版iOS编程学习书籍<7天玩转iOS界面开发>,<初级到AppStore上架& ...
- python爬虫经典教程-python爬虫经典例子有哪些
python爬虫例子:首先导入爬虫的库,生成一个response对象:然后设置编码格式,并打印状态码:最后输出爬取的信息,代码为[print(response.text)]. python爬虫例子: ...
- python网络爬虫系列教程_Python网络爬虫系列教程连载 ----长期更新中,敬请关注!...
感谢大家长期对Python爱好者社区的支持,后期Python爱好者社区推出Python网络爬虫系列教程.欢迎大家关注.以下系列教程大纲,欢迎大家补充.视频长期连载更新中 --------------- ...
- python爬虫菜鸟教程-Python 应该怎么学?
不多BB,直接上干货! 现在很多学校都已经将Python作为入门的编程语言了,在目前特别火的机器学习.人工智能领域,Python可以说是标配的编程语言. 所以我由浅入深的整理了一些Python的资源和 ...
- python爬虫菜鸟教程-Python数据分析,学习路径拆解及资源推荐
原标题:Python数据分析,学习路径拆解及资源推荐 关于Python数据分析,其实网上能够找到的学习资源很多,主要分为两类: 一类是提供各种资源的推荐,比如书单.教程.以及学习的先后顺序: 另一类是 ...
- python网络爬虫系列教程——Python+PhantomJS +Selenium组合应用
全栈工程师开发手册 (作者:栾鹏) python教程全解 Selenium 是什么?一句话,自动化测试工具.它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器. 理 ...
- python编程实例教程-Python程序设计实例教程
图书简介 配套资源:电子课件,习题答案,教学大纲,源代码 本书特色: ★本书共14个项目,主要包括Python编程基础.网络爬虫.数据分析和数据可视化四大部分内容. ★全部代码适用于Python 3. ...
- python开发游戏教程_Python开发星际游戏实例教程
这篇文章主要为大家详细介绍了Python外星人入侵游戏编程完整的实现思路,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 PYTHON游戏编程外星人入侵的完整实现思路,具体内容如下 准备工作:下载p ...
- 实例教程-Python与Kivy联合开发Android程序及与硬件交互1
<<序>> 本书更多的解释是代码中添加注释的方法,这样有助于读者更好的理解代码的作用,这是实例教程的特色. 本书可能要写几个月到一年左右的时间,因此也希望读者能够纠错.参与.互 ...
最新文章
- Ubuntu中Atom编辑器显示中文乱码的处理方法
- VMware(VMDebugger)导致VS2010启动慢的解决办法
- 写了个Linux包过滤防火墙
- [C/CPP系列知识] Type difference of character literals 和 bool in C and C++
- 第三次学JAVA再学不好就吃翔(part31)--super关键字
- [渝粤教育] 广东-国家-开放大学 21秋期末考试服务标准化10011k1
- java面试题30:牛客 下列哪项不属于jdk1.6垃圾收集器?
- java关键字 valotile_Java内存模型-jsr133规范介绍,java中volatile关键字的含义
- 创业公司用 Serverless,到底香不香?
- 活动执行手册_如何从一无所知到独立规划陈列手册?
- Html 点透镂空遮罩,swift 实现遮罩部分区域“挖洞”效果和点击事件穿透
- python赋值运算符_解释一下python中的赋值运算符
- 10年老技术员教你免费的、完整的把 PDF 转换为 Word
- win10 1803官方原版镜像
- 数字图像处理02:直方图均衡化imhist函数的python实现
- 泛微oa系统什么框架_泛微OA办公系统是什么,怎么使用_使用方法_使用平台_企业服务汇...
- ios-swift-环信集成
- 服务器装系统出现命令提示符,怎么通过cmd命令提示符重装系统?具体怎么操作?...
- 选择适合esx服务器的性能,VMWare ESX Server性能调整
- 一个简单的网页版钢琴(用到JQuery)