爬取网页地址
https://steam250.com/2020
网页详情

爬取的信息

  • 游戏名称
  • 游戏图片地址
  • 游戏发行日期
  • 游戏分类
  • 游戏评分
  • 游戏描述
  • 游戏介绍视频
    这里游戏描述需要点击单个游戏介绍界面才能看到

    游戏视频则需要点击游戏图片才能查看

找到爬取数据所属的html元素

爬取思路
游戏名称 游戏图片地址 游戏发行日期 游戏分类 游戏评分这些属性可以通过抓取指定html块可以拿到,游戏详情的话可以通过两个思路来实现,一个是通过爬虫爬取这些游戏详情的地址,之后访问这些地址,另一种是编写脚本点击跳转至游戏详情页面,之后再跳回主界面,这里我选用了第二种方法,同样游戏视频我也是编写脚本写的

代码
这里我只爬取了前30名游戏信息,太多了会封ip(主要是由于下载视频)
1.启动webdriver,并获取html源码

def openFireFoxDiver():url = "https://steam250.com/2020"driver = webdriver.Firefox()driver.get(url)time.sleep(5)html_page = driver.page_source.encode('utf-8')  # 取得网页的源代码return [html_page,driver];

2.保存html源码
这里我怕突然有一天网站关闭了我先备份一波源码

# path是存放地址
def saveHtmlCode(html,path):file = open(path, "wb")file.write(html)

3.获取游戏详情

def getsteam150Info(path,driver):hot_game_list = []html = EpicGamePrice.getHtmlCode(path)html.decode();html_page_soup = BeautifulSoup(html, 'html.parser')num = 1;succ = 0;game_nameAndMp4 = {'name': [], 'mp4': []}while succ<30:# 获取每个游戏 idgameInfo = html_page_soup.find('div', id=str(num))game_a = gameInfo.find('span',class_ ='title').find('a')game_name = moveHeadAndTailSpace(game_a.get_text()).replace(":","");print(game_name)tb_name = 'time_task_tb_game'count = CollectDataToMysql.select_game_count(game_name,tb_name)if(count>0):[game_date,game_catagory,game_rate] = getGameInfo(gameInfo)# 找到进入游戏详情页面div_id = driver.find_element_by_id(str(num));div_id.find_elements_by_class_name("title")[0].click()time.sleep(5)#游戏详细信息game_descr = moveHeadAndTailSpace(driver.find_elements_by_class_name("blurb")[0].text);#获取游戏图片game_logo = driver.find_elements_by_class_name("logo")[0];game_img = game_logo.find_elements_by_tag_name("img")[0].get_attribute('src')#print(game_img)#返回首页driver.back()game_mp4_src = get_mp4(driver,num)game_nameAndMp4['name'].append(game_name);game_nameAndMp4['mp4'].append(game_mp4_src);#加入热门游戏列表hot_game_list.append([game_name,game_date,game_catagory,game_rate,game_descr,game_img])succ+=1;num+=1;write_to_excel(hot_game_list,'./gameInfo_csv/hot_game.csv')CollectDataToMysql.save_hot_game_to_mysql(hot_game_list)print(game_nameAndMp4)for i in range(0,len(game_nameAndMp4['name'])):print(game_nameAndMp4['name'][i]+"   "+game_nameAndMp4['mp4'][i]);download_videofile(game_nameAndMp4)

(1)因为我之前爬取过steam一些游戏信息,所以我想把这些游戏信息关联起来,所以我在获取单个游戏名称之后先在游戏表中查找是否有这个游戏,没有则跳过这个游戏
也就是下面这个函数

#select 一共有几条游戏
def select_game_count(game_name,tb_name):db = connectMysql()cur = db.cursor()sql = "SELECT COUNT(*) FROM %s where game_name = '%s';" %(tb_name,game_name)cur.execute(sql)result = cur.fetchone()#print(result[0])return result[0];

(2) 获取游戏的一些属性我用函数封装起来了

#获取热门游戏详细信息
def getGameInfo(gameInfo):game_date  = moveHeadAndTailSpace(gameInfo.find('span', class_='date').get_text());game_catagory = moveHeadAndTailSpace(gameInfo.find('a',class_ = 'genre').get_text());game_rate = moveHeadAndTailSpace(gameInfo.find('span',class_ = 'score').get_text());print(game_date+"  "+game_catagory+"   "+game_rate)return [game_date,game_catagory,game_rate]

(3) 我把爬取的游戏信息存入了一个csv表中

def write_to_excel(game_list,path):file = open(path,'w',encoding='utf-8-sig')csv_writer = csv.writer(file)csv_writer.writerow(["game_name", "game_date", "game_catagory","game_rate","game_descr","game_img"])for i in range(0,len(game_list)):game = game_list[i];csv_writer.writerow([game[0], game[1], game[2],game[3],game[4],game[5]])file.close()

(4) 下载游戏视频
我是将下载的视频放到了磁盘中

#下载视频文件
def download_videofile(game_nameAndMp4_dic):headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/51.0.2704.63 Safari/537.36'}root = './hot_game_mp41/'for i in range (0,len(game_nameAndMp4_dic['name'])):file_name = game_nameAndMp4_dic['name'][i]+".mp4"print("文件下载:%s" % game_nameAndMp4_dic['name'][i])r = requests.get(game_nameAndMp4_dic['mp4'][i], stream=True,headers=headers).iter_content(chunk_size=1024 * 1024)with open(root + file_name, 'wb') as f:for chunk in r:if chunk:f.write(chunk)print("%s 下载完成!\n" % file_name)r.close()time.sleep(60)print("所有视频下载完成!")return

爬取结果

python爬取steam250游戏详细信息和下载游戏介绍视频相关推荐

  1. python爬取淘宝手机信息并下载到excel文件中

    #coding=GBK import requests import re from xlwt import Workbook import xlrd import time def key_name ...

  2. Selenium根据输入的公司名称来爬取公司的详细信息!

    1.下载驱动并设置环境变量 1.1.查看你的浏览器的版本 在网址栏输入:chrome://version PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资料 ...

  3. 超简单,Python爬取阴阳师游戏原声

    Python爬取阴阳师游戏BGM,附完整代码 爬取阴阳师游戏原声 网页分析 教程开始 1 请求json文件并获取数据 2 保存文件 注意,一定要看 结语 完整源码 目标网址:https://yys.1 ...

  4. BeautifulSoup 根据输入的公司名称来爬取公司的详细信息(2022-08-24更新版)

    BeautifulSoup 根据输入的公司名称来爬取公司的详细信息----2022-08-24更新版 1.获取headers 2.登录成功后,可根据输入的公司名称进行查询操作,得到所需要的内容. 3. ...

  5. python关于二手房的课程论文_基于python爬取链家二手房信息代码示例

    基本环境配置 python 3.6 pycharm requests parsel time 相关模块pip安装即可 确定目标网页数据 哦豁,这个价格..................看到都觉得脑阔 ...

  6. Python爬取安居客经纪人信息

    Python爬取安居客经纪人信息 Python2.7.15 今天我们来爬取安居客经纪人的信息.这次我们不再使用正则,我们使用beautifulsoup.不了解的可以先看一下这个文档,便于理解.http ...

  7. java 爬取京东商品详细信息 价格

    java 爬取京东商品详细信息 价格 获取图中的价格,因为京东的价格有反扒机制,价格通过js加载的,直接通过页面标签是获取不到的,所以我们要去要相应的js. http://p.3.cn/prices/ ...

  8. Python爬取药监局化妆品管理信息发现的问题

    Python爬取药监局化妆品管理信息 **1.json格式本质上是字符串!!! 今天在爬取国家药监局化妆品管理信息的时候,发现"json数据本质上是字符串",以前我还以为json本 ...

  9. 爬取微博游戏名人信息

    爬取微博游戏名人信息 昨天写了关于静态网站爬取爬取的文章,以为自己无所不能了,想去微博上爬点数据,差点被微博吊起来打,遇到了太多的坑了,做下记录 常规步骤 我们爬取的网址是爬取网址 我们需要爬取游戏名 ...

最新文章

  1. 今年1篇Science,2篇NBT,2篇MP,1篇PNAS等11篇文章,遗传发育所白洋组在植物微生物组取得系列进展!
  2. opensuse 安装 php,在openSUSE上安装和配置LAMP(2)
  3. Unity Shaders
  4. 所有人问「贴吧之父」俞军
  5. r740服务器增加内存,戴尔R740服务器获取cpu、内存、硬盘参数信息。
  6. c#中在工作线程创建窗体并操作
  7. client中周期性边界_FLUENT创建周期性边界条件方法
  8. LVS+Keepalived实现高可用负载均衡
  9. 2017.10.17 Codechef MARCH14 GERALD07加强版 失败总结
  10. 格力又有新专利了:“一种铁芯冲片、电机及新能源汽车”
  11. C语言动态链表数据结构
  12. 使用python编写聊天小程序
  13. PL/SQL中导出整个表、表结构、部分数据、以及导入整个表
  14. python怎么把数据导入excel_如何把python中的数据导入excel
  15. matlab 散点图 对数,matlab – 对数 – 对数散点图上的半透明标记
  16. 山东轻工业学院CSDN高校俱乐部参加“新一代语音云发布暨语音开发者大会”与“2012百度开发者大会”体会心得
  17. mkv文件怎样转成mp4
  18. 使用 Nginx 反向代理域名
  19. 配置web.xml文件时报The word ‘***‘ is not correctly spelled的解决方案
  20. SpringMVC里的Model、Map、ModelMap以及ModelAndView

热门文章

  1. 物联新时代遭遇核心技术瓶颈
  2. 上海锦隆驾校「科目三」2019年考试心得实录
  3. android studio 主题样式,AndroidStudio主题样式
  4. 通过移动设备行为数据预测使用者的性别和年龄
  5. 2019量子计算机排名,中国实现20个量子比特全局纠缠 量子计算机最新进展2019 量子计算机概念龙头股...
  6. 使用 frp配置内网映射
  7. 对容器运行时runc的简单理解
  8. 逃离被微软支配的恐惧,.NET开发者们Fork了一个开源分支
  9. 防火墙入侵与检测 day06 防火墙虚拟系统
  10. 一些关于随机矩阵的算法