python爬取静态数据并存入数据库
连接mysql数据库
导入pymysql,连接数据库
在mysql中创建数据表
create table hw_info(
id varchar(20) primary key ,
music_num varchar(20),
person_num varchar(20),
person_name varchar(20),
feel varchar(20),
music_url varchar(100)
)
import pymysql
db = pymysql.connect('ip','QINYUYOU','密码','homework')
cursor = db.cursor()
print('连接成功')
爬取数据
我们爬取的网站为:网站地址
需要爬取序号,音频编号,专家ID,专家名字,情感状态,音频地址。
f12查看headers
找到cookie和user-Agent,设置headers
headers = {
'cookie':'PHPSESSID=c704263b13bb6f919e7534be3690a04f',
'user-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36'
}
get请求网站
r = requests.get(url,headers=headers)
BeautifulSoup解析
r_b = BeautifulSoup(r.text,'lxml')
f12检查html源码,找到要爬取内容的信息
找到爬取信息的html标签,通过find_all方法定位到标签位置,获取标签内容
序号、音频、专家id和专家名字在同一个列表中,它们的字符串结构不同,不用正则表达式的话无法统一将信息提取出来,我只能一一对它们进行处理
for j in range(len(ob[i].find_all('b'))):
if j == 0 :
a = str(ob[i].find_all('b')[j].string)[3:]
print('序号为:'+str(ob[i].find_all('b')[j].string)[3:])#获取序号
if j == 1 :
b = str(ob[i].find_all('b')[j].string)[5:-1]
print('音频编号为:'+str(ob[i].find_all('b')[j].string)[5:-1])#获取音频编号
if j == 2 :
c = str(ob[i].find_all('b')[j].string)[5:]
print('专家id是:'+str(ob[i]