Python爬取《权力的游戏第八季》演员数据并分析

本文介绍了使用Python爬取百度百科《权力的游戏第八季》演员信息,包括演员链接、详细信息和图片,并进行了数据分析,如年龄、国籍和身高的分布图表展示。在数据处理过程中,遇到了json字符转义问题,通过特定方法成功解决。
摘要由CSDN通过智能技术生成

数据爬取

一、浏览待爬取网页

首先浏览待爬取网页即百度百科《权力的游戏第八季》页面,发现演员表处有每个演员的词条链接,所有可以通过爬取此处获得每个演员的词条链接,方便对每个演员的详细信息进行爬取:
权游第八季百度百科演员表
接着进入龙母的词条页面:
演员词条页面
发现此处有其基本信息:
演员基本信息
所以我们可以通过之前爬取获得的每个演员的词条链接,再把每个演员的基本信息进行爬取并保存下来,便于后续进行数据分析。

二、爬取百度百科中《权力的游戏第八季度》演员表获得每个演员的链接并保存入文件

import re
import requests
import json
import pandas
import os
import sys
from bs4 import BeautifulSoup

#获取请求
def getHTMLText(url,kv):
    try:
        r = requests.get(url, headers=kv)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except Exception as e:
        print(e)

#解析出演员姓名与链接数据并存入文件

def parserData(text):
    soup = BeautifulSoup(text,'lxml')
    review_list = soup.find_all('li',{
   'class':'pages'})
    soup1 = BeautifulSoup(str(review_list),'lxml')
    all_dts = soup1.find_all('dt')
    stars = []
    for dt in all_dts:
        star = {
   } 
        star["name"] = dt.find('a').text
        star["link"] = 'https://baike.baidu.com' + dt.find('a').get('href')
        stars.append(star)
    json_data = json.loads(str(stars).replace("\'","\""))
    with open('work/'+'stars.json','w',encoding='UTF-8') as f:
        json.dump(json_data,f,ensure_ascii=False)

三、爬取演员详细信息并保存入文件(其中还下载保存了每个演员的图片)

#爬取并解析出演员详细信息与图片并存入文件        
def crawl_everyone(kv):
    with open('work/' + 'stars.json', 'r', encoding='UTF-8') as file:
        json_array = json.loads(file.read())
    star_infos = []
    for star in json_array:
        star_info = {
   }       
        name = star['name']
        link = star['link']
        star_info['name'] = name
        #向选手个人百度百科发送一个http get请求
        r = requests.get(link,headers=kv)        
        soup = BeautifulSoup(r.text,'lxml')       
        #获取选手的国籍、星座、身高、出生日期等信息
        base_info_div = soup.find('div',{
   'class':'basic-info cmn-clearfix'})
        dls = base_info_div.find_all('dl')
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值