Python如何获取网页指定数据信息

1、概括

        本文主要使用python编程,使用requests库获取网页内容,利用BeautifulSoup实现html文本解析查找我们想要得数据信息,使用pandas最终将我们获取得数据持久化存储到txt文本文件中。

3、预习

        在开始案例之前,我们来掌握一下主要使用到的api接口:

# url:网址

# headers:请求头数据字典

# return:返回网页信息

requests.get(url=url, headers=headers)

# dl:标签名称

# attrs:标签的属性及属性值字典

# return:返回其全部的查到符合要求的数据节点

bs1.find_all('dl',attrs={'class':'roleIntrodcution-descritpion'})

注意:find_all使用前是需要使用BeautifulSoup转化requests的文本内容

4、分析

        我们需要对其网址的html进行分析,F12查看其中角色名、演员名、介绍、图片的节点标签名和节点的class属性值或者id值 ,从而获取其所在位置数据。通过F12查看元素可看到除了图片网址其他信息都在其节点内部dl标签,class为roleIntrodcution-descritpion的父节点下。同样的方式我们分别查看一下角色名称、演员名称、介绍信息的对应节点。

# 角色名

find_all('div',attrs={'class':'role-name'})

# 演员名

find_all('div',attrs={'class':'role-actor'})

# 描述

find_all('dd',attrs={'class':'role-description'})

# 图片信息

find_all('a',attrs={'class':'roleIntrodcution-picture'})

Python如何获取网页指定数据信息_第1张图片

5、案例实现

#导包
import requests
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'
}
url = 'https://baike.baidu.com/item/%E5%8A%9F%E5%8B%8B/24265662?fr=aladdin#8'
response = requests.get(url=url, headers=headers)
#step_3:获取响应数据:通过调用响应对象的text属性
page_text = response.text
from bs4 import BeautifulSoup
bs1 = BeautifulSoup(page_text, 'html.parser')
# 名称
name = []
# 演员名称
real_name = []
# 介绍
instruct=[]
for i in bs1.find_all('dl',attrs={'class':'roleIntrodcution-descritpion'}):
    for j in i.find_all('div',attrs={'class':'role-name'}):
        name.append(j.text.replace('\n',''))
        
    for j in i.find_all('div',attrs={'class':'role-actor'}):
        real_name.append(j.text.replace('\n','').replace('演员',''))

for i in bs1.find_all('dd',attrs={'class':'role-description'}):
    instruct.append(i.text.replace('\n',''))
# 照片下载路径
pic = []
for i in bs1.find_all('a',attrs={'class':'roleIntrodcution-picture'}):
    pic.append(i.find('img').get('src'))
    
data={'角色姓名':name,'演员':real_name,'角色简介':instruct,'角色剧照':pic}
import pandas as pd
df = pd.DataFrame(data,columns=['角色姓名', '演员','角色简介','角色剧照'])
df.to_csv('data.txt', sep=' ',index=False)

6、结果

# data.txt 文件名

# sep列分格

# index是否显示索引

df.to_csv('data.txt', sep=' ',index=False)

Python如何获取网页指定数据信息_第2张图片

你可能感兴趣的:(Python,python)