python模块使用案例

一、使用MySQLdb模块代码示例:

# 导入 MySQLdb模块
import MySQLdb
# 和服务器建立链接,host是服务器ip,我的MySQL数据库搭建在本机,默认的是127.0.0.1,
# 用户、密码、数据库名称对应着照输就行了,默认的端口号是3306,charset是编码方式,
# 默认的是utf8(也有可能是gbk,看安装的版本)。. 1point3acres.com/bbs
conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='yourPassword', db='dbname', port=3306, charset='utf8')
# 建立cursor
cur = conn.cursor()
# 通过对象cur的execute()方法执行SQL语句
cur.execute("select * from citeRelation where paperName = 'On Random Graph'")
# fetchall()方法获得查询结果,返回的是一个list,可以直接这样查询:list[i][j],
# i表示查询结果中的第i+1条record,j表示这条记录的第j+1个attribute(别忘了python从0开始计数)# 也可以进行delete,drop,insert,update等操作,比如:
sql = "update studentCourseRecord set fail = 1 where studentID = '%s' and semesterID = '%s' and courseID = '%s'" %(studentID,course[0],course[1])
cur.execute(sql)
# 与查询不同的是,执行完delete,insert,update这些语句后必须执行下面的命令才能成功更新数据库
conn.commit()
# 一如既往的,用完了之后记得关闭cursor,然后关闭链接
cur.close(). more info on 1point3acres.com
conn.close()

二、使用cookie登陆抓取指定页面,可以像下面这样,这是一个最简洁的代码

#!/usr/bin/python
# coding:utf-8
import httplib2
import urllib2
import re #正则表达式模块 class PageClass: #获取指定url的网页内容
def get_page(self,url,headers):
http=httplib2.Http()
response,content=http.request(url,'GET',headers=headers)
#return content.decode('unicode-escape').encode('utf-8')
return content.decode('unicode-escape').encode('utf-8') def main():
headers={"cookie":'your cookie'}
url = 'http://fengchao.baidu.com'
#print headers
page = PageClass()
content = page.get_page(url,headers)
print content if __name__ == "__main__":
main()

只需要输入url和headers就可以抓取到指定的页面。这里需要输入你自己的cookie。上面的代码执行后的结果如下,可以看到我们抓取到了内容:

三、下面给出一个示例,其功能为提取百度首页搜索框上面的导航条的内容:

#该程序是对百度的首页进行分析,并提取出其搜索框上面的导航条
import httplib2
import urllib2
import re
from lxml import etree def main():
http = httplib2.Http()
response,content = http.request("http://www.baidu.com",'GET')
print "response:",response
print "content:",content tree = etree.HTML(content) #上面的注释为要查找的部分html
#<p id=nv><a href=http://news.baidu.com>新闻</a><b>网页</b>
#<a href=http://tieba.baidu.com>贴吧</a><a href=http://zhidao.baidu.com>知道</a>
#<a href=http://mp3.baidu.com>MP3</a><a href=http://image.baidu.com>图片</a>
#<a href=http://video.baidu.com>视频</a><a href=http://map.baidu.com>地图</a></p> #下面开始查找id为nv的p标签下的所有<a>的href值
hyperlinks = tree.xpath(u'//p[@id="nv"]/a/@href')
print "hyperlinks:",hyperlinks
for hyperlink in hyperlinks:
print "hyperlink:",hyperlink #查找id为nv的p标签下的所有<a>节点
a_nodes = tree.xpath(u'//p[@id="nv"]/a')
print "a_nodes_length:",len(a_nodes)
for a_node in a_nodes:
print "<a>:",a_node.text,a_node.attrib['href']
print "\n" #通过正则表达式查找<p id="nv">的标签内容,匹配的内容为正则表达式中的"()"内的内容
name_flag='<p id="nv">(.+?)</p>'
name_re=re.compile(name_flag,re.S)
name_regx=name_re.search(content)
print name_regx
name=name_regx.group(1)
print "name:",name if __name__ == "__main__":
main()

四、HTMLParser

该模块是用来解析HTML元素的。可以从HTML中筛选出指定的标签。下面给出一个例子,读取百度首页www.baidu.com中的所有链接,并打印出来。

import HTMLParser
import urllib
import sys #定义HTML解析器
class parseLinks(HTMLParser.HTMLParser):
#该方法用来处理开始标签的,eg:<div id="main">
def handle_starttag(self, tag, attrs):
if tag == 'a': #如果为<a>标签
#name为标签的属性名,如href、name、id、onClick等等
for name,value in attrs:
if name == 'href': #这时选择href属性
print "name_value: ",value #href属性的值
print "first tag:",self.get_starttag_text() #<a>标签的开始tag
print "\n" if __name__ == "__main__":
#创建HTML解析器的实例
lParser = parseLinks()
#打开HTML文件
lParser.feed(urllib.urlopen("http://www.baidu.com").read())
lParser.close()

但调用feed函数时,会自动调用handle_starttag函数,这里的handle_starttag函数是对原函数的重写。handle_starttag(self,tag,attrs)中的参数tag是标签的名字;参数attrs是一个(name,value)键值对,是通过查找到tag的<>括号来确定的,其中name是tag的<>中的属性名,value是去除引号后的值。

python模块使用案例的更多相关文章

  1. python模块之HTMLParser之穆雪峰的案例(理解其用法原理)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python模块之HTMLParser之穆雪峰的案例(理解其用法原理) #http://www.cnblog ...

  2. Python模块、包、异常、文件(案例)

    Python模块.包.异常.文件(案例) python.py #模块 # Python中的模块(Module),是一个Python文件,以.py文件结尾,包含了Python对象定义和Python语句, ...

  3. Python操作MySQL案例

    最近都在学习Python代码,希望学会Python后,能给我带来更高的工作效率,所以每天坚持学习和拷代码,下面是一个Python操作MySQL的一个实例,该实例可以让更多的人更好了解MySQLdb模块 ...

  4. python模块之JSON

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python模块之JSON #1.JSON #JSON表示的对象就是标准的JavaScript语言的对象 # ...

  5. python模块之 fabric

    Python模块之Fabric   Fabric简介 Fabric是一个Python库,可以通过SSH在多个host上批量执行任务.你可以编写任务脚本,然后通过Fabric在本地就可以使用SSH在大量 ...

  6. Scikit-Learn:开源的机器学习Python模块(转载)

    摘要: scikit-learn是一个用于机器学习的Python模块,其具有操作简单.效率高.无访问限制.BSD开源协议等等特征,在机器学习这一块是比较受欢迎的. scikit-learn是一个用于机 ...

  7. python模块之junos-eznc

    一.简介 本文将使用python模块中的junos-eznc来控制juniper的 Junos OS系统,此模块可以在windows平台和UNIX平台上使用 二.实验环境 1.操作系统:win10 2 ...

  8. 第10.5节 使用__all__定义Python模块导入白名单

    一. 引言 <第10.4节 Python模块的弱封装机制>介绍了Python模块的的弱封装机制,除了使用弱封装机制来从一定程度上防止导入特定成员外,Python模块中还提供可另外一种类似白 ...

  9. 第10.4节 Python模块的弱封装机制

    一. 引言 Python模块可以为调用者提供模块内成员的访问和调用,但某些情况下, 因为某些成员可能有特殊访问规则等原因,并不适合将模块内所有成员都提供给调用者访问,此时模块可以类似类的封装机制类似的 ...

随机推荐

  1. iOS开发中检测版本,有新版本则更新

    iOS程序自动提示更新的实现方案大致分为两种: 第一种,自己服务器提供一个接口,告知相关app的当前版本,是否需要更新,以及更新的地址等信息 . 第二种,就是利用苹果的appstore 提供的相关ap ...

  2. ueditor在使用requirejs时,报ZeroClipboard undefined错误

    再网上找到了 http://blog.csdn.net/xundh/article/details/44536665       这样一篇文章, 其中原因说的很明白了 是因为在有requirejs时, ...

  3. 2016.1.4~2016.1.7真题回顾!-- HTML5学堂

    2016.1.4~2016.1.7真题回顾!-- HTML5学堂 2015悄然而逝,崭新的2016随即而行!生活需要新鲜感,学习JavaScript的过程需要有成就感!成就感又是来自于每一天的不断练习 ...

  4. Linux设计准则

     计算机体系结构: 运算器 控制器 存储器,内存,编址 输出设备 输入设备 Linux内核功能: 进程管理内存管理文件系统网络功能硬件驱动安全机制 Linux的基本原则: 1.由目的单一的小程序组成: ...

  5. Unity3D研究院之获取摄像机的视口区域

    摄像机分为两种,一种是正交摄像机还有一种是透视摄像机.正交摄像机无论远近它的视口范围永远是固定的,但是透视摄像机是由原点向外扩散性发射,也就是距离越远它的视口区域也就越大.那么我们如何获取距离摄像机任 ...

  6. maven docker 操作

    1. 使用dokerfile 进行构建 创建dockerfile 2. maven 插件 <plugin> <groupId>com.spotify</groupId&g ...

  7. jquery选择器之属性选择器

    [attribute]   匹配指定属性名的所有元素 [attribute=value] 匹配给定的属性名是某个特定值的属性 [attribute!=value] 匹配给定的属性名不是某个特定值的属性 ...

  8. java比较两个字符串是否相等

    从c 到c++ 到 c# 到 JavaScript  判断两个字符串是否相等,用==号都可以.奇葩的java怎么可以只能用equals()这个函数.只是因为String是引用类型吗??!!哭笑不得.. ...

  9. python学习-day12:列表、元祖、字典介绍和内置

    list:列表 >>>----可以被修改.修改成元素,元素可以使单独的数字,也可以是:新的list. 通过:链表..每个元素存储的时候,同时会指向下一个元素. 二.list编辑修改方 ...

  10. [HTML5]原生事件绑定和jquery动态事件绑定的区别

    原生事件绑定: <!-- 标签上绑定的事件是由window对象帮助调用,因此方法内的this其实是window对象 --> <label><input type=&quo ...