贴吧大召唤术——Python实现提取贴吧页面的用户id
2014-05-03 15:31
239 查看
前几天就想写一个python脚本实现从百度贴吧任意帖子页面获取该页面上的用户id。一开始我打算用正则表达式查找<a data-field标签,但多次尝试后被搞晕了!!html代码里面的转义实在太麻烦了!(好吧,其实只是我没经验))后来尝试用BeautifulSoup解析html,顺利得到用户id了,但是从得到的结果发现,有些用户id居然没有得出来,分析半天才发现原来是百度贴吧把html的一半给以<!-->标签注释掉了,估计是为了优化页面的加载。但正是这个原因使得我无法使用BeautifulSoup解析html获取目标结果了。于是我又想找找有没有别的第三方模块可以处理html注释部分,尝试了lxml.html模块,同样无果。最终只有回到最初的方法——正则表达式,搞定!
[补充]发表后我才发现第13行代码显示有问题,我原代码是i=i.replace(u'& q u o t;',u'"')....(请无视空格)结果一发表出来后又被HTML转义为一个双引号了!That's where keng me before!
以上代码只是我的测试代码,最终效果在我的saeapp
虽然最终没有用BeautifulSoup和lxml.html模块解决,但毕竟学会了它们的使用了!
过会我再记录一下这两模块的学习体会
[补充]发表后我才发现第13行代码显示有问题,我原代码是i=i.replace(u'& q u o t;',u'"')....(请无视空格)结果一发表出来后又被HTML转义为一个双引号了!That's where keng me before!
#!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'tigerstudent' import urllib import re import json #因为该网页是 gbk编码的,所以首先从gbk编码转为python内部的unicode编码 page=urllib.urlopen(r'http://tieba.baidu.com/p/3014774907').read().decode('gbk') #这里涉及到正则表达式的贪婪匹配,所以用(.+?)而不用(.+) res=re.findall(r"data-field=\'(.+?)\'",page) for i in res: i=i.replace(u'"',u'"') #i=i.replace(u'false',u"False")这行代码没必要,因为python的False在json格式中表示为false final=json.loads(i) if(final and final.get('un')):#若final不为None且含有‘un'元素则输出 print final.get('un') print res[0]#从这里输出的结果可以知道,在上面对i的修改并没有真正修改res的内容 print type(res[0])
以上代码只是我的测试代码,最终效果在我的saeapp
虽然最终没有用BeautifulSoup和lxml.html模块解决,但毕竟学会了它们的使用了!
过会我再记录一下这两模块的学习体会
相关文章推荐
- python实现LBP方法提取图像纹理特征实现分类
- SaltStack与Python配合实现系统用户自动化管理
- 【Python基础】1.4.4 图形用户实例——用Python实现简易聊天对话框
- python实现矩阵中某一列特定对象行的提取
- Python利用pyHook实现监听用户鼠标与键盘事件
- python简单实现用户表单登录
- python实现网页链接提取的方法分享
- ajax+jsp提取数据库记录并实现自动刷新页面
- python 3.0 模拟用户登录功能并实现三次错误锁定
- struts2.0拦截器(实现未登录的用户不能访问系统的页面)(转)
- 用Python和Django实现多用户博客系统——UUBlog
- 在登录页面中js进行正则验证电话号码和邮箱地址,并使用ajax进行用户ID的数据库验证
- 《推荐系统》基于用户和Item的协同过滤算法的分析与实现(Python)
- 使用Python的Django框架结合jQuery实现AJAX购物车页面
- Python实现提取谷歌音乐搜索结果的方法
- 基于Python,Selenium和PhantomJS实现动态页面爬取
- python3+PyQt5 实现支持多线程的页面索引器应用程序
- Python3 使用bs4按标签提取贴吧楼主发表内容
- Python 2.7_爬取CSDN单页面利用正则提取博客文章及url_20170114
- PYTHON实现swf提取