Python常用扩展安装及使用方法

  • Post author:
  • Post category:python




一.requests



1.安装

pip install requests

2.使用方法



(1)GET
import requests
 
kw = {'wd':'长城'}
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}

# params 接收一个字典或者字符串的查询参数,字典类型自动转换为url编码,不需要urlencode()
response = requests.get("http://www.baidu.com/s?", params = kw, headers = headers)
 
# 查看响应内容,response.text 返回的是Unicode格式的数据
print response.text

# 查看响应内容,response.content返回的字节流数据
print respones.content

# 查看完整url地址
print response.url

# 查看响应头部字符编码
print response.encoding

# 查看响应码
print response.status_code


(2)POST
import requests
 
formdata = {
    "type":"AUTO",
    "i":"i love python",
    "doctype":"json",
    "xmlVersion":"1.8",
    "keyfrom":"fanyi.web",
    "ue":"UTF-8",
   "action":"FY_BY_ENTER",
   "typoResult":"true"
}
 
url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null"
headers={ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"}
response = requests.post(url, data = formdata, headers = headers)
print response.text
 
# 如果是json文件可以直接显示
print response.json()


(3)Cookies
import requests
 
response = requests.get("http://www.baidu.com/")
 
# 返回CookieJar对象:
cookiejar = response.cookies
 
# 将CookieJar转为字典:
cookiedict = requests.utils.dict_from_cookiejar(cookiejar)
 
print cookiejar
print cookiedict


(4)Session
import requests
 
# 创建session对象,可以保存Cookie值
ssion = requests.session()
 
# 处理 headers
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
 
# 需要登录的用户名和密码
data = {"email":"mr_mao_hacker@163.com", "password":"alarmchime"}  
 
# 发送附带用户名和密码的请求,并获取登录后的Cookie值,保存在ssion里
ssion.post("http://www.renren.com/PLogin.do", data = data)
 
# ssion包含用户登录后的Cookie值,可以直接访问那些登录后才可以访问的页面
response = ssion.get("http://www.renren.com/410043129/profile")
 
# 打印响应内容
print response.text


(5)处理HTTPS请求 SSL证书验证

Requests也可以为HTTPS请求验证SSL证书:

要想检查某个主机的SSL证书,你可以使用 verify 参数(也可以不写)

import requests
response = requests.get("https://www.baidu.com/", verify=True)
 
# 也可以省略不写
# response = requests.get("https://www.baidu.com/")
print r.text



二、Beautiful Soup4



1.安装

pip install beautifulsoup4



2.使用方法

创建bs对象
# 打开本地HTML文件的方式来创建对象
soup = BeautifulSoup(open('xxxx.html'))
# 创建Beautiful Soup对象
soup = BeautifulSoup(html, "lxml")  # 指定lxml解析器

# 格式化输出soup对象内容
print(soup.prettify())

Tag 类

# 获取Tag  soup.标签名  查找的是在所有内容中的第一个符合要求的标签
print(soup.标签名)

# name是获取当前标签名称,soup.name为[document]
print(soup.标签名.name)

# attrs获取当前标签的所有属性和值,以键值对形式存入字典返回  下文以 a 标签为例
print(soup.a.attrs)
# 获取标签某一属性的值
print(soup.a['href'])
# 修改标签某一个属性的值
soup.a['href'] = "http://www.peipeipei.com"
# 删除某一属性
del soup.a['class']

NavigableString 类 以p标签为例

# 获取标签内内容
print(soup.p.string)
print(type(soup.p.string))

Comment类 以a标签为例,a标签内内容为注释

<a href="http://example.com/elsie" class="sister" id="link1"><!-- Elsie --></a>,

print(soup.a.string)  # 注释符号不输出,只输出内容
# Elsie
print(type(soup.a.string))
# <class 'bs4.element.Comment'>

遍历文档树 以head标签为例

"<head><title>The Dormouse's story</title></head>"

#  .content 属性可以将tag的子节点以列表的方式输出
print(soup.head.contents)
# [<title>The Dormouse's story</title>]
print(soup.head.contents[1])  # 获取列表中某一元素

# .children 返回的是一个list生成器对象
print(soup.head.children)
# <listiterator object at 0x7f71457f5710>
for child in soup.body.children:
    print(child)

# .descendants 对所有tag的子孙节点进行递归循环
for child in soup.descendants:
    print(child)

# .string 返回最里面的内容
print(soup.head.string)
print(soup.title.string)  # 两个输出是一样的

搜索文档树

find_all(name, attrs, recursive, text, **kwargs)
# find用法相同,只返回一个

# name参数可以查找所有名字为 name 的tag,可以是字符串,正则表达式,列表
print(soup.find_all('a'))
for tag in soup.find_all(re.compile("^b")):
    print(tag.name)
print(soup.find_all(["a", "b"]))

# keyword参数直接匹配属性对应的值
print(soup.find_all(class_="sister"))  # 因为class在python中已经有了,为了防止冲突,所以是class_
print(soup.find_all(id='link2'))

# text参数搜索文档中的字符串内容,与name参数的可选值一样,text参数接受字符串,正则表达式,列表
print(soup.find_all(text="Elsie"))
print(soup.find_all(text=["Tillie", "Elsie", "Lacie"]))
print(soup.find_all(text=re.compile("Dormouse")))



三、pymysql



1、安装pymysql

 pip3 install PyMySQL



2、数据库连接

import pymysql

# 打开数据库连接
db = pymysql.connect(host='localhost',
                     user='testuser',
                     password='test123',
                     database='TESTDB')

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# 使用 execute()  方法执行 SQL 查询 
cursor.execute("SELECT VERSION()")

# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()

print("Database version : %s " % data)

# 关闭数据库连接
db.close()



3、插入数据

import pymysql

# 打开数据库连接
db = pymysql.connect(host='localhost',
                     user='testuser',
                     password='test123',
                     database='TESTDB')

# 使用cursor()方法获取操作游标 
cursor = db.cursor()

# SQL 插入语句
sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \
       LAST_NAME, AGE, SEX, INCOME) \
       VALUES ('%s', '%s',  %s,  '%s',  %s)" % \
      ('Mac', 'Mohan', 20, 'M', 2000)
try:
    # 执行sql语句
    cursor.execute(sql)
    # 执行sql语句
    db.commit()
except:
    # 发生错误时回滚
    db.rollback()

# 关闭数据库连接
db.close()



4、查询数据

import pymysql

# 打开数据库连接
db = pymysql.connect(host='localhost',
                     user='testuser',
                     password='test123',
                     database='TESTDB')

# 使用cursor()方法获取操作游标 
cursor = db.cursor()

# SQL 查询语句
sql = "SELECT * FROM EMPLOYEE \
       WHERE INCOME > %s" % (1000)
try:
    # 执行SQL语句
    cursor.execute(sql)
    # 获取所有记录列表
    results = cursor.fetchall()
    for row in results:
        fname = row[0]
        lname = row[1]

        age = row[2]
        sex = row[3]
        income = row[4]
        # 打印结果
        print("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % \
              (fname, lname, age, sex, income))
except:
    print("Error: unable to fetch data")

# 关闭数据库连接
db.close()
fetchone():该方法获取下一个查询结果集。结果集是一个对象
fetchall(): 接收全部的返回结果行.
rowcount:这是一个只读属性,并返回执行execute()方法后影响的行数。



5、更新数据

import pymysql

# 打开数据库连接
db = pymysql.connect(host='localhost',
                     user='testuser',
                     password='test123',
                     database='TESTDB')

# 使用cursor()方法获取操作游标 
cursor = db.cursor()

# SQL 更新语句
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
try:
    # 执行SQL语句
    cursor.execute(sql)
    # 提交到数据库执行
    db.commit()
except:
    # 发生错误时回滚
    db.rollback()

# 关闭数据库连接
db.close()



6、删除数据

import pymysql

# 打开数据库连接
db = pymysql.connect(host='localhost',
                     user='testuser',
                     password='test123',
                     database='TESTDB')

# 使用cursor()方法获取操作游标 
cursor = db.cursor()

# SQL 删除语句
sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
try:
    # 执行SQL语句
    cursor.execute(sql)
    # 提交修改
    db.commit()
except:
    # 发生错误时回滚
    db.rollback()

# 关闭连接
db.close()



版权声明:本文为weixin_42894969原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。