一.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 版权协议,转载请附上原文出处链接和本声明。