首页 > 其他分享 >Metacritic 网站中的游戏开发者和类型信息爬取

Metacritic 网站中的游戏开发者和类型信息爬取

时间:2024-09-12 17:23:55浏览次数:9  
标签:Metacritic 类型信息 get site parseGame 爬取 item div class

为了从 Metacritic 网站上爬取游戏的开发者和类型信息,你可以使用 Python 的网络爬虫工具,比如 requestsBeautifulSoup,或者更高级的工具如 ScrapySelenium。本文将介绍一种基于 requestsBeautifulSoup 的简单爬虫示例,并假设目标是从 Metacritic 的单个游戏页面上提取开发者和类型信息。

Metacritic 网站中的游戏开发者和类型信息爬取_数据

1、问题背景

我们想要从 Metacritic 网站爬取游戏的信息,包括游戏标题、开发者、类型、评论得分和发行日期。我们使用该网站提供的 API 来爬取数据,但代码中遇到了问题,无法爬取游戏开发者和类型的信息。

2、解决方案

以下列出了可能出现的代码问题和可能的解决方案:

  • 问题 1:parseGame 函数中没有正确使用 meta 参数。meta 参数应该包含一个键为 item 的字典,该字典的值是需要传递给 parseGame 函数的爬取到的数据。
  • 解决方案: 修改 parseGame 函数中的 meta 参数,使其包含一个键为 item 的字典,该字典的值是需要传递给 parseGame 函数的爬取到的数据。
  • 问题 2: 使用了过时的 HtmlXPathSelector 解析器。在 Scrapy 中,现在建议使用 Selector 解析器代替 HtmlXPathSelector 解析器。
  • 解决方案:HtmlXPathSelector 解析器替换为 Selector 解析器。
  • 问题 3: 使用了 extract() 方法来提取数据,但没有使用 get() 方法来获取提取结果。extract() 方法返回一个列表,而 get() 方法返回一个字符串。
  • 解决方案:extract() 方法替换为 get() 方法,以获取提取结果。
  • 问题 4:parseGame 函数中插入了 MySQL 数据库,这可能会导致性能问题。建议使用 Scrapy 的管道机制来处理数据的存储。
  • 解决方案:parseGame 函数中的 MySQL 数据库操作移到管道机制中。
  • 问题 5:parseGame 函数中使用 yield item 来输出数据,这可能会导致数据丢失。建议使用 return item 来输出数据。
  • 解决方案:parseGame 函数中的 yield item 替换为 return item

代码修改如下:

from string import lowercase

from scrapy.item import Field, Item
from scrapy.spider import BaseSpider
from scrapy.http import Request
from scrapy.selector import HtmlXPathSelector, Selector

from metacritic.items import MetacriticItem


class MetacriticSpider(BaseSpider):
    name = 'metacritic'
    allowed_domains = ['metacritic.com']

    max_id = 1 # your max_id value goes here!!!

    def start_requests(self):
        for c in lowercase:
            for i in range(self.max_id):
                yield Request('http://www.metacritic.com/browse/games/title/ps4/{0}?page={1}'.format(c, i), callback=self.parseps4)

    def parseGame(self, response):
        item = response.meta['item']
        hxs = HtmlXPathSelector(response)
        site = hxs.select('//div[@class="product_wrap"]')

        item['dev'] = site.xpath('.//span[contains(@class, "summary_detail developer")]/span[1]/text()').get()
        item['genre'] = site.xpath('.//span[contains(@class, "summary_detail product_genre")]/span[1]/text()').get()

        yield item

    def parseps4(self, response):
        hxs = Selector(response)
        sites = hxs.select('//div[@class="product_wrap"]')
        for site in sites:
            item = MetacriticItem()
            item['title'] = site.xpath('.//div[contains(@class, "basic_stat product_title")]/a/text()').get().strip()
            item['cscore'] = site.xpath('.//div[contains(@class, "basic_stat product_score brief_metascore")]/div[1]/text()').get().strip()
            item['uscore'] = site.xpath('.//div/ul/li/span[contains(@class, "data textscore")]/text()').get().strip()
            item['release'] = site.xpath('.//li[contains(@class, "stat release_date full_release_date")]/span[2]/text()').get().strip()

            link = site.xpath('.//div[contains(@class, "basic_stat product_title")]/a/@href').get()
            yield Request('http://www.metacritic.com/' + link, meta={'item': item}, callback=self.parseGame)

这个扩展代码从一个包含多个游戏的列表页面爬取每个游戏的链接,然后访问每个游戏的详细页面提取信息。

通过这种方式,你可以批量爬取 Metacritic 上多个游戏的开发者和类型信息。

标签:Metacritic,类型信息,get,site,parseGame,爬取,item,div,class
From: https://blog.51cto.com/u_13488918/11992272

相关文章

  • Python编译器IDE爬虫爬取3首歌曲代码
    importrequestssong_urls=[“http://music.163.com/song/media/outer/url?id=25795016.mp3”,“http://music.163.com/song/media/outer/url?id=5255631.mp3”,“http://music.163.com/song/media/outer/url?id=5255640.mp3”]forindex,song_urlinenumerate(so......
  • 爬虫案例2-爬取视频的三种方式之一:selenium篇(2)
    @目录前言selenium简介实战案例共勉博客前言继使用requests库爬取好看视频的文章后,本文分享使用python第三方库selenium库接着来爬取视频网站,后续也会接着分享使用第三方库DrissionPage爬取视频。selenium简介selenium是一个用于web应用测试的工具集,它可以直接运行在浏览器中,......
  • 爬虫案例2-爬取视频的三种方式之一:requests篇(1)
    @目录前言爬虫步骤确定网址,发送请求获取响应数据对响应数据进行解析保存数据完整源码共勉博客前言本文写了一个爬取视频的案例,使用requests库爬取了好看视频的视频,并进行保存到本地。后续也会更新selenium篇和DrissionPage篇。当然,爬取图片肯定不止这三种方法,还有基于python的sc......
  • 【python爬虫】从腾讯API爬取美国疫情数据+制表
    最近(文章撰写时间为2020/6/118:40)疫情在中国情况好转,却在美国暴虐。本篇文章将爬取腾讯提供的美国疫情数据并制表。1.爬取数据调用API接口接口:https://api.inews.qq.com/newsqa/v1/automation/modules/list?modules=FAutoCountryMerge观察得到的数据:{ ..., "data":{ ......
  • 【Java】爬取澳门区划信息
    官网地址:https://macaostreets.iam.gov.mo/zh_mo/freguesiaindex.html大区部分是在页面展示的 点击发现并没有请求网络,所以数据是js中存在的 找到了展示街道方法,这一段:使用大区id匹配上述变量的functionshowStreets(freguesia){varfreguesiaStre......
  • Python爬取下载m3u8加密视频,原来这么简单!
    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。爬取视频的时候发现,现在的视频都是经过加密(m3u8),不再是mp4或者avi链接直接在网页显示,都是经过加密形成ts文件分段进行播放。今天就教大家如何通过python爬取下载m3u8加密......
  • [Python之代码爬虫] -爬取披头士乐队历年专辑封面-网易云音乐
    一、前言前文说过我的设计师小伙伴的设计需求,他想做一个披头士乐队历年专辑的瀑布图。通过搜索,发现网易云音乐上有比较全的历年专辑信息加配图,图片质量还可以,虽然有大有小。我的例子怎么都是爬取图片?(谁让你总是跟设计师小伙伴一起玩耍。。。)看来图片对于设计师来说还是有着......
  • 网络热词分析一(用python爬取数据)
    importcsvimportrequestsfrombs4importBeautifulSoupdeffetch_page_data(page_number):base_url='https://regengbaike.com/'load_more_url_template=base_url+'?page={}'url=load_more_url_template.format(page_numbe......
  • 再也不怕深夜emo的时候没会员了,无敌Python只需20行代码,轻松爬取网易云排行榜热门音乐!
    再也不怕深夜emo的时候没会员了,无敌Python只需20行代码,轻松爬取网易云排行榜热门音乐!让我们直接开始本次操作吧!importrandomimporttimeimportexecjsimportrequestsimportre"""发送请求:模拟浏览器对于url地址发送请求"""#模拟浏览器headers={'User-Agent'......
  • python爬取音乐小工具
    importrequestscookies={'Hm_lvt_b8f2e33447143b75e7e4463e224d6b7f':'1725333776','HMACCOUNT':'15050700AD9FD996','Hm_lpvt_b8f2e33447143b75e7e4463e224d6b7f':'1725333791','mode':&......