使用Xpath获取标题菜单的文本,再使用dump方法将获取到的文本写入JSON文件。
*url字符代表一个网址此处省略网址
import requests
import chardet
from lxml import etree
ua = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) Chrome/65.0.3325.181'}
rqg=requests.get(url,headers=ua,timeout=3.0)
rqg.encoding = chardet.detect(rqg.content)['encoding'] #requests请求过程
#初始化HTML
html = rqg.content.decode('utf-8')
html = etree.HTML(html,parser=etree.HTMLParser(encoding='utf-8'))
content = html.xpath('//ul[starts-with(@id,"me")]/li//a/text()')
print('标题菜单的文本:',content)
#使用dump方法写入文件
with open('output.json','w') as fp:
json.dump(content,fp)
PyMySQL库使用connect函数连接数据库,connect函数的基本语法如下:
pymysql.connect(host,port,user,passwd,db,chardet,connect_timeout,use_unicode)
connect函数常用的参数及其说明
参数名称 | 说明 |
---|---|
host(str) | MySQL数据库地址,本机地址通常为127.0.0.1 |
port(int) | MySQL数据库端口号,通常为3306 |
user(str) | 数据库用户名,管理员用户为root |
passwd(str) | 数据库密码 |
db(str) | 数据库名称 |
charset(str) | 连接数据库的编码,通常为utf8 |
connect_timeout(int) | 连接超时时间,以秒为单位 |
use_unicode(str) | 结果以unicode字符串的格式返回 |
import pymysql
#使用参数名创建连接
conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='0000',db='test',chardet='utf8',connect_timeout=10)
#不使用参数名创建连接
conn = pymysql.connect('127.0.0.1',3306,'root','0000','test','utf8',10)
PyMYSQL库中可以使用函数返回的连接对象connect进行操作,常用的函数如表所示
函数 | 说明 |
---|---|
commit | 提交事务 |
rollback | 事务回滚,在没有提交事务的前提下 |
cursor | 创建一个游标对象 |
在Python操作数据库的过程中,通常使用游标对象进行数据库操作。
游标对象常用到的方法
方法 | 说明 | 语法格式 |
---|---|---|
close | 关闭游标 | cursor.close() |
execute | 执行SQL语句 | cursor.execute(sql) |
excutemany | 执行多条SQL语句 | cursor.excutemany(sql) |
fetchone | 获取执行结果的第一条记录 | cursor.fetchone() |
fetchmany | 获取执行结果的n条记录 | cursor.fetchmany(n) |
fetchall | 获取执行结果的全部记录 | cursor.fetchall() |
scroll | 用于游标滚动 | cursor.scroll() |
游标对象的创建是基于连接对象的,创建游标对象之后即可通过语句对数据库进行增删改查等操作。
import pymysql
#使用参数名创建连接
conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='0000',db='test',chardet='utf8',connect_timeout=10)
cursor = conn.cursor() #创建游标
sql = 'create table if not exists class (id int(10) primary key auto_increment,name varchar(20) not null,text varchar(20) not null)' #创建class表,有id为主键,并设置自动增加,name,text 为非空
cursor.execute(sql) #执行创建的SQL语句 !代码只能执行一次,不然将报错
cursor.execute('show tables') #查看创建的表
#准备数据
import requests
import chardet
from bs4 import chardet
ua = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) Chrome/65.0.3325.181'}
rqg=requests.get(url,headers=ua,timeout=3.0)
rqg.encoding = chardet.detect(rqg.content)['encoding']
html = rqg.content.decode('utf-8')
soup = BeautifulSoup(html,'lxml')
target = soup.title.string
print('标题的内容:',target)
title = 'abcd' #插入数据
sql1 = 'insert into class (name,text)values(%s,%s)'
cursor.execute(sql1,(title,target)) #执行插入语句
conn.commit() #提交事务
data = cursor.execute('select * from class') #查询数据
data1 = cursor.fetchall() #使用fetchall方法获取结果
print('查询获取的结果:',data1)
conn.close() #关闭连接