用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 相关文章推荐
Python写的服务监控程序实例
Jan 31 Python
Python psutil模块简单使用实例
Apr 28 Python
浅谈python中的正则表达式(re模块)
Oct 17 Python
Python中顺序表的实现简单代码分享
Jan 09 Python
Python格式化输出字符串方法小结【%与format】
Oct 29 Python
对Python中创建进程的两种方式以及进程池详解
Jan 14 Python
Python零基础入门学习之输入与输出
Apr 03 Python
浅谈Pandas Series 和 Numpy array中的相同点
Jun 28 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
Jul 10 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
Mar 09 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
Dec 23 Python
基于python实现银行管理系统
Apr 20 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
PHP新手上路(五)
2006/10/09 PHP
PHP的SQL注入过程分析
2012/01/06 PHP
基于PHP array数组的教程详解
2013/06/05 PHP
thinkphp验证码显示不出来的解决方法
2014/03/29 PHP
PHP SOCKET编程详解
2015/05/22 PHP
php超快高效率统计大文件行数
2015/07/05 PHP
php数组分页实现方法
2016/04/30 PHP
js 父窗口控制子窗口的行为-打开,关闭,重定位,回复
2010/04/20 Javascript
JS父页面与子页面相互传值方法
2014/03/05 Javascript
node.js中的fs.futimesSync方法使用说明
2014/12/17 Javascript
jQuery实现仿腾讯微博滑出效果报告每日天气的方法
2015/05/11 Javascript
js获取字符串字节数方法小结
2015/06/09 Javascript
Bootstrap实现水平排列的表单
2016/07/04 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
jQuery扩展方法实现Form表单与Json互相转换的实例代码
2018/09/05 jQuery
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
2019/02/11 Javascript
vue-router路由模式详解(小结)
2019/08/26 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
2019/09/27 Javascript
微信小程序wxs实现吸顶效果
2020/01/08 Javascript
JS画布动态实现黑客帝国背景效果
2020/11/08 Javascript
[03:22]DSPL第一期精彩集锦:酷炫到底!
2014/11/07 DOTA
Python机器学习之决策树算法
2017/12/22 Python
Python基于高斯消元法计算线性方程组示例
2018/01/17 Python
Python3并发写文件与Python对比
2019/11/20 Python
python代码打印100-999之间的回文数示例
2019/11/24 Python
PyTorch中的拷贝与就地操作详解
2020/12/09 Python
viagogo意大利票务平台:演唱会、体育比赛、戏剧门票
2018/01/26 全球购物
护士自我鉴定范文
2013/10/06 职场文书
大学毕业生自我鉴定
2013/11/05 职场文书
党的群众路线对照检查材料范文
2014/09/24 职场文书
群众路线专项整治工作情况报告
2014/10/28 职场文书
大学生自荐信范文
2015/03/05 职场文书
因身体原因离职的辞职信范文
2015/05/12 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书
IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
2021/09/25 Java/Android
Python用tkinter实现自定义记事本的方法详解
2022/03/31 Python