追星一族如何通过榜单分析自己爱豆的“江湖地位”呢?
又如何通过数据找到其与竞争对手间的差距呢?
接下来,我以易烊千玺为例,爬取明星影响力榜单数据。
爬虫明星影响力榜
一、步骤描述:
1、调用浏览器驱动
2、利用3个列表分别存储名字、排名、影响力值
3、找到易烊千玺的位置
4、通过指针找到其对应的上家、下家
5、打印数据结果
二、代码如下:
# coding = utf-8
from bs4 import BeautifulSoup #网页解析获取数据
import re #正则表达式进行文字匹配
import urllib.request,urllib.error #制定url获取网页数据
import xlwt #进行excel操作
import sqlite3 #进行sqlite数据库操作
from selenium import webdriver
import time
wd = webdriver.Chrome('./chromedriver.exe')
wd.get("https://m.iqiyi.com/m5/bubble/dynamicTopList.html?platform=1042&origin=paopao_app&social_platform=wechat_friend")
find_yy = "易烊千玺"
list_num = []
list_name = []
list_rank = []
for i in range(7):#将滚动条拉直最底部
wd.execute_script('window.scrollBy(0,document.body.scrollHeight)')
time.sleep(1)
#获取榜单上所有明星名字,加入列表list_name
targets = wd.find_elements_by_xpath("//*[@class='rank-c-name']")
for n in targets:
list_name.append(n.text)
#获取榜单上所有明星排名,加入列表list_num
targets = wd.find_elements_by_xpath("//*[@class='mark-topNo']")
for n in targets:
list_num.append(n.text)
#获取榜单上所有明星影响力,加入列表list_rank
targets = wd.find_elements_by_xpath("//*[@class='rank-c-total']")
for n in targets:
list_rank.append(n.text)
for i in range(100):
if list_name[i] == find_yy:
break
before_name = list_name[i-1]
after_name = list_name[i+1]
before_rank = list_rank[i-1]
after_rank = list_rank[i+1]
print("易烊千玺-----",list_rank[i])
print("其上家",before_name,"-----",before_rank)
print("其下家",after_name,"-----",after_rank)
三、小结:其实这个方法挺笨拙的,属于小学生思维。