python爬取静态数据并存入数据库

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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值