本文主要和大家分享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动态爬虫的实例分享相关推荐

  1. 视频教程-Python开发全教程-Python

    Python开发全教程 目前就职于中国唯品会做iOS开发工程师,在良师益友网,麦子学院任职iOS讲师,出版iOS编程学习书籍<7天玩转iOS界面开发>,<初级到AppStore上架& ...

  2. python爬虫经典教程-python爬虫经典例子有哪些

    python爬虫例子:首先导入爬虫的库,生成一个response对象:然后设置编码格式,并打印状态码:最后输出爬取的信息,代码为[print(response.text)]. python爬虫例子: ...

  3. python网络爬虫系列教程_Python网络爬虫系列教程连载 ----长期更新中,敬请关注!...

    感谢大家长期对Python爱好者社区的支持,后期Python爱好者社区推出Python网络爬虫系列教程.欢迎大家关注.以下系列教程大纲,欢迎大家补充.视频长期连载更新中 --------------- ...

  4. python爬虫菜鸟教程-Python 应该怎么学?

    不多BB,直接上干货! 现在很多学校都已经将Python作为入门的编程语言了,在目前特别火的机器学习.人工智能领域,Python可以说是标配的编程语言. 所以我由浅入深的整理了一些Python的资源和 ...

  5. python爬虫菜鸟教程-Python数据分析,学习路径拆解及资源推荐

    原标题:Python数据分析,学习路径拆解及资源推荐 关于Python数据分析,其实网上能够找到的学习资源很多,主要分为两类: 一类是提供各种资源的推荐,比如书单.教程.以及学习的先后顺序: 另一类是 ...

  6. python网络爬虫系列教程——Python+PhantomJS +Selenium组合应用

    全栈工程师开发手册 (作者:栾鹏) python教程全解 Selenium 是什么?一句话,自动化测试工具.它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器. 理 ...

  7. python编程实例教程-Python程序设计实例教程

    图书简介 配套资源:电子课件,习题答案,教学大纲,源代码 本书特色: ★本书共14个项目,主要包括Python编程基础.网络爬虫.数据分析和数据可视化四大部分内容. ★全部代码适用于Python 3. ...

  8. python开发游戏教程_Python开发星际游戏实例教程

    这篇文章主要为大家详细介绍了Python外星人入侵游戏编程完整的实现思路,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 PYTHON游戏编程外星人入侵的完整实现思路,具体内容如下 准备工作:下载p ...

  9. 实例教程-Python与Kivy联合开发Android程序及与硬件交互1

    <<序>> 本书更多的解释是代码中添加注释的方法,这样有助于读者更好的理解代码的作用,这是实例教程的特色. 本书可能要写几个月到一年左右的时间,因此也希望读者能够纠错.参与.互 ...

最新文章

  1. Ubuntu中Atom编辑器显示中文乱码的处理方法
  2. VMware(VMDebugger)导致VS2010启动慢的解决办法
  3. 写了个Linux包过滤防火墙
  4. [C/CPP系列知识] Type difference of character literals 和 bool in C and C++
  5. 第三次学JAVA再学不好就吃翔(part31)--super关键字
  6. [渝粤教育] 广东-国家-开放大学 21秋期末考试服务标准化10011k1
  7. java面试题30:牛客 下列哪项不属于jdk1.6垃圾收集器?
  8. java关键字 valotile_Java内存模型-jsr133规范介绍,java中volatile关键字的含义
  9. 创业公司用 Serverless,到底香不香?
  10. 活动执行手册_如何从一无所知到独立规划陈列手册?
  11. Html 点透镂空遮罩,swift 实现遮罩部分区域“挖洞”效果和点击事件穿透
  12. python赋值运算符_解释一下python中的赋值运算符
  13. 10年老技术员教你免费的、完整的把 PDF 转换为 Word
  14. win10 1803官方原版镜像
  15. 数字图像处理02:直方图均衡化imhist函数的python实现
  16. 泛微oa系统什么框架_泛微OA办公系统是什么,怎么使用_使用方法_使用平台_企业服务汇...
  17. ios-swift-环信集成
  18. 服务器装系统出现命令提示符,怎么通过cmd命令提示符重装系统?具体怎么操作?...
  19. 选择适合esx服务器的性能,VMWare ESX Server性能调整
  20. 一个简单的网页版钢琴(用到JQuery)

热门文章

  1. 你知道检测报告上CMA、CAL、CNAS是什么意思吗?-LIMS2
  2. 3. Python 数据容器(列表、元组、字符串、集合、字典)
  3. 介绍一下 WMS WCS PLC 之间的关系 并附加代码
  4. C++造成内存泄漏的原因汇总:
  5. TL_AP1907GC-POE/GC 无线桥接(WDS)设置
  6. c语言整形数组长度_c语言中如何求数组长度
  7. AV视频输出接口类型
  8. 闪客精灵,让你不再为flash动画发愁
  9. wap2app双标题,如何禁用原生标题栏
  10. 怎么默认打开数字小键盘