用Python程序抓取网页的HTML信息的一个小实例


Posted in Python onMay 02, 2015

抓取网页数据的思路有好多种,一般有:直接代码请求http、模拟浏览器请求数据(通常需要登录验证)、控制浏览器实现数据抓取等。这篇不考虑复杂情况,放一个读取简单网页数据的小例子:
目标数据

将ittf网站上这个页面上所有这些选手的超链接保存下来。

用Python程序抓取网页的HTML信息的一个小实例

数据请求

真的很喜欢符合人类思维的库,比如requests,如果是要直接拿网页文本,一句话搞定:

doc = requests.get(url).text

解析html获得数据

以beautifulsoup为例,包含获取标签、链接,以及根据html层次结构遍历等方法。参考见这里。下面这个片段,从ittf网站上获取指定页面上指定位置的链接。

url = 'http://www.ittf.com/ittf_ranking/WR_Table_3_A2.asp?Age_category_1=&Age_category_2=&Age_category_3=&Age_category_4=&Age_category_5=&Category=100W&Cont=&Country=&Gender=W&Month1=4&Year1=2015&s_Player_Name=&Formv_WR_Table_3_Page='+str(page)
doc = requests.get(url).text
soup = BeautifulSoup(doc)
atags = soup.find_all('a')
rank_link_pre = 'http://www.ittf.com/ittf_ranking/'

mlfile = open(linkfile,'a')
for atag in atags:
  #print atag
  if atag!=None and atag.get('href') != None:
    if "WR_Table_3_A2_Details.asp" in atag['href']:
      link = rank_link_pre + atag['href']
      links.append(link)
      mlfile.write(link+'\n')
      print 'fetch link: '+link
mlfile.close()
Python 相关文章推荐
Tornado服务器中绑定域名、虚拟主机的方法
Aug 22 Python
Python 常用 PEP8 编码规范详解
Jan 22 Python
Python标准模块--ContextManager上下文管理器的具体用法
Nov 27 Python
利用python编写一个图片主色转换的脚本
Dec 07 Python
python 处理dataframe中的时间字段方法
Apr 10 Python
对Python之gzip文件读写的方法详解
Feb 08 Python
Python合并同一个文件夹下所有PDF文件的方法
Mar 11 Python
PyQt5 QTable插入图片并动态更新的实例
Jun 18 Python
python正则表达式匹配不包含某几个字符的字符串方法
Jul 23 Python
Python CSV文件模块的使用案例分析
Dec 21 Python
pandas dataframe 中的explode函数用法详解
May 18 Python
python3从网络摄像机解析mjpeg http流的示例
Nov 13 Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
May 02 #Python
在Python的Django框架中用流响应生成CSV文件的教程
May 02 #Python
详细解读Python中的__init__()方法
May 02 #Python
举例讲解Python的Tornado框架实现数据可视化的教程
May 02 #Python
Python的Bottle框架中返回静态文件和JSON对象的方法
Apr 30 #Python
使用Python编写提取日志中的中文的脚本的方法
Apr 30 #Python
简单的连接MySQL与Python的Bottle框架的方法
Apr 30 #Python
You might like
解决file_get_contents无法请求https连接的方法
2013/12/17 PHP
PHP数组函数知识汇总
2016/05/12 PHP
JavaScript的变量作用域深入理解
2009/10/25 Javascript
JS 如果改变span标签的是否隐藏属性
2011/10/06 Javascript
JavaScript编程中布尔对象的基本使用
2015/10/25 Javascript
JS遍历页面所有对象属性及实现方法
2016/08/01 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
node.js中grunt和gulp的区别详解
2017/07/17 Javascript
微信小程序WebSocket实现聊天对话功能
2018/07/06 Javascript
详解Vue 动态组件与全局事件绑定总结
2018/11/11 Javascript
JQuery特殊效果和链式调用操作示例
2019/05/13 jQuery
vue 全局环境切换问题
2019/10/27 Javascript
javascript将16进制的字符串转换为10进制整数hex
2020/03/05 Javascript
react国际化化插件react-i18n-auto使用详解
2020/03/31 Javascript
vue总线机制(bus)知识点详解
2020/05/10 Javascript
详解JSON.stringify()的5个秘密特性
2020/05/26 Javascript
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
Python使用百度API上传文件到百度网盘代码分享
2014/11/08 Python
利用python批量修改word文件名的方法示例
2017/10/17 Python
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
Python实现ping指定IP的示例
2018/06/04 Python
Python中的Django基本命令实例详解
2018/07/15 Python
Django框架中间件(Middleware)用法实例分析
2019/05/24 Python
django 模型中的计算字段实例
2020/05/19 Python
PyCharm+Miniconda3安装配置教程详解
2021/02/16 Python
软件测试面试题
2014/01/05 面试题
Java servlet面试题
2012/03/04 面试题
建筑学推荐信
2013/11/03 职场文书
机关门卫的岗位职责
2014/04/29 职场文书
竞选班干部演讲稿500字
2014/08/20 职场文书
事业单位财务人员岗位职责
2015/04/14 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
工伤调解协议书
2016/03/21 职场文书
超级详细实用的pycharm常用快捷键
2021/05/12 Python
Python机器学习应用之基于线性判别模型的分类篇详解
2022/01/18 Python