用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 相关文章推荐
Web服务器框架 Tornado简介
Jul 16 Python
在Django中创建动态视图的教程
Jul 15 Python
Python的Django框架中自定义模版标签的示例
Jul 20 Python
不可错过的十本Python好书
Jul 06 Python
Python中字符串与编码示例代码
May 20 Python
pandas计算最大连续间隔的方法
Jul 04 Python
python 列表、字典和集合的添加和删除操作
Dec 16 Python
PyTorch 普通卷积和空洞卷积实例
Jan 07 Python
python实现人机猜拳小游戏
Feb 03 Python
PYQT5 vscode联合操作qtdesigner的方法
Mar 24 Python
PageFactory设计模式基于python实现
Apr 14 Python
pytorch查看通道数 维数 尺寸大小方式
May 26 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
详解:――如何将图片储存在数据库里
2006/12/05 PHP
PHP 5.0对象模型深度探索之属性和方法
2008/03/27 PHP
JavaScript 动态将数字金额转化为中文大写金额
2009/05/14 Javascript
解决jquery submit()提交表单提示:f[s] is not a function
2013/01/23 Javascript
Jquery封装tab自动切换效果的具体实现
2013/07/13 Javascript
JS实现多物体缓冲运动实例代码
2013/11/29 Javascript
jQuery的$.proxy()应用示例介绍
2014/04/03 Javascript
原生Ajax 和jQuery Ajax的区别示例分析
2014/12/17 Javascript
JavaScript动态加载样式表的方法
2015/03/21 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
2015/10/01 Javascript
NodeJs读取JSON文件格式化时的注意事项
2016/09/25 NodeJs
详解JS去重及字符串奇数位小写转大写
2016/12/29 Javascript
angularjs使用directive实现分页组件的示例
2017/02/07 Javascript
Nodejs中使用phantom将html转为pdf或图片格式的方法
2017/09/18 NodeJs
Vue+Flask实现简单的登录验证跳转的示例代码
2018/01/13 Javascript
js实现鼠标单击Tab表单切换效果
2018/05/16 Javascript
vue单页面在微信下只能分享落地页的解决方案
2019/04/15 Javascript
简单了解JavaScript异步
2019/05/23 Javascript
DWR内存兼容及无法调用问题解决方案
2020/10/16 Javascript
在Python中使用HTML模版的教程
2015/04/29 Python
python的多重继承的理解
2017/08/06 Python
对python 矩阵转置transpose的实例讲解
2018/04/17 Python
Python Tkinter模块实现时钟功能应用示例
2018/07/23 Python
python实现的分层随机抽样案例
2020/02/25 Python
Eclipse配置python默认头过程图解
2020/04/26 Python
keras实现多种分类网络的方式
2020/06/11 Python
Python 连接 MySQL 的几种方法
2020/09/09 Python
html5简介及新增功能介绍
2020/05/18 HTML / CSS
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
医药代表个人的求职信分享
2013/12/08 职场文书
产品开发计划书
2014/04/27 职场文书
宣传标语大全
2014/07/01 职场文书
供用电专业求职信
2014/07/07 职场文书
村班子对照检查材料
2014/08/18 职场文书
师范生见习自我总结
2015/06/23 职场文书
2015年秋学期师德师风建设工作总结
2015/10/23 职场文书