爬虫篇——采集单机游戏(网页游戏),爬取小游戏

接到需求,要求要将几个好玩的网页版本的单机小游戏。采集到我们的服务器中。

这里以 水枪射手 这个游戏举例
http://m.7k7k.com/player/198961.htm?uc_biz_str=qk_enable_gesture%3afalse|OPT%3ABACK_BTN_STYLE%400%7COPT%3ATOOLBAR_STYLE%401
在这里插入图片描述
1、首先准备好抓包工具或者直接在用浏览器自带的抓包,推荐用抓包工具可以批量复制抓到的资源链接。
如chrome浏览器:
在这里插入图片描述

fiddler抓包工具:
在这里插入图片描述
2、抓包工具准备好后,然后开始玩一遍游戏,在玩游戏的时候通过抓包工具,抓取游戏的资源链接。 需要注意的是,有的游戏,在刚进去的时候会吧所有的资源链接都加载出来,而有的游戏则需要一边玩,一边加载新的资源链接。

将抓取的资源链接,复制到代码里。去下载

 public static void main(String[] args) {
        //存到自己的文件夹位置
        String localPath="D:/crawler_games/shoot/";

        //pre_url 这个参数是:用于存文件夹时候,去掉链接的前面这一串路径
        String pre_url="http://flash.7k7k.com/cms/cms10/20200116/1213129483/01/";
        String list[]={

 				//"这里输入抓包的所有代码 "
                "http://flash.7k7k.com/cms/cms10/20200116/1213129483/01/gameIndex.html",
                "http://flash.7k7k.com/cms/cms10/20200116/1213129483/01/h5api-interface.php",
                "http://flash.7k7k.com/cms/cms10/20200116/1213129483/01/index.js",
                "http://flash.7k7k.com/cms/cms10/20200116/1213129483/01/libs/laya.core.js",
                "http://flash.7k7k.com/cms/cms10/20200116/1213129483/01/libs/laya.ui.js",
                "http://flash.7k7k.com/cms/cms10/20200116/1213129483/01/libs/laya.d3.js",
                "http://flash.7k7k.com/cms/cms10/20200116/1213129483/01/libs/laya.physics3D.js",
                "http://flash.7k7k.com/cms/cms10/20200116/1213129483/01/js/bundle.js",
                //"这里输入抓包的所有代码...上面这些只是小部分示例"


        };
        try {
            for (String s : list) {
                String urlName = s.replace(pre_url,"");
                String path=localPath+urlName;
                downloadNet(s,path,localPath,pre_url);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //下载资源文件的方法
    private static void downloadNet(String crawlerUrl,String path,String localPath,String pre_url) throws Exception {
        if (!crawlerUrl.contains(pre_url)){
            return;
        }

        //这里的将首页资源,刚换名字
        if(path.contains("gameIndex.html")){
            path=localPath+"\\index.html";
        }
        System.out.println("完成 :" +path);
        // 下载网络文件
        int bytesum = 0;
        int byteread = 0;

        URL url = new URL(crawlerUrl);
        String[] split = path.split("\\/");
        System.out.println("长度"+split.length);
        for (int i = 1; i < split.length; i++) {
            String everyPath="";
            for (int j = 0; j < i; j++) {
                everyPath+=split[j]+"/";
                File f = new File(everyPath);
                //没有目录,就创建目录
                if (!f.exists()) {
                    try {
                        f.mkdirs();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }

        try {
            URLConnection conn = url.openConnection();
            InputStream inStream = conn.getInputStream();


            FileOutputStream fs = new FileOutputStream(path);

            byte[] buffer = new byte[1204];
            int length;
            while ((byteread = inStream.read(buffer)) != -1) {
                bytesum += byteread;
                fs.write(buffer, 0, byteread);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

3、执行main方法采集:
在这里插入图片描述

4、执行完后,就可以看到采集的文件资源了(从自己指定的目录里查看)
在这里插入图片描述
5、通过本地的环境的nginx就可以访问自己的抓的小游戏了, nginx做个简单的配置,配置静态资源访问即可(注意:游戏的资源后缀比较多、且少见,按后缀配置静态资源访问的时候,一定保证这些资源都可以正常访问):
在这里插入图片描述
6、一切准备好后,可以访问自己本地的游戏链接了

在这里插入图片描述

好的,我可以为您提供爬虫教程,以下是使用Scrapy框架爬取豆瓣电影TOP250的步骤: 1. 创建Scrapy项目 首先需要使用Scrapy命令行工具创建一个Scrapy项目,可以使用以下命令: ``` scrapy startproject douban_top250 ``` 该命令将会在当前目录下创建一个名为douban_top250的Scrapy项目。 2. 创建Spider 接下来需要创建一个Spider来定义爬取的规则,可以使用以下命令在Scrapy项目的spiders目录下创建一个名为douban_spider的Spider: ``` scrapy genspider douban_spider movie.douban.com ``` 在spiders目录下会生成一个名为douban_spider.py的文件,我们可以在该文件中定义爬取规则。 3. 编写Spider规则 在douban_spider.py文件中,我们需要定义如何爬取豆瓣电影TOP250的规则,以下是一个简单的例子: ```python import scrapy from scrapy import Selector from douban_top250.items import DoubanTop250Item class DoubanSpider(scrapy.Spider): name = "douban_spider" allowed_domains = ["movie.douban.com"] start_urls = [ "https://movie.douban.com/top250" ] def parse(self, response): selector = Selector(response) item_list = selector.xpath('//ol[@class="grid_view"]/li') for item in item_list: douban_item = DoubanTop250Item() douban_item['rank'] = item.xpath('div[@class="pic"]/em/text()').extract()[0] douban_item['title'] = item.xpath('div[@class="info"]/div[@class="hd"]/a/span[@class="title"]/text()').extract()[0] douban_item['rating'] = item.xpath('div[@class="info"]/div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()').extract()[0] douban_item['quote'] = item.xpath('div[@class="info"]/div[@class="bd"]/p[@class="quote"]/span[@class="inq"]/text()').extract()[0] yield douban_item ``` 在上述代码中,我们定义了一个名为DoubanSpider的Spider,并定义了一些爬取规则: - allowed_domains:定义允许爬取的域名; - start_urls:定义爬虫开始爬取的URL列表; - parse:定义如何解析响应结果,生成Item对象。 4. 定义Item 在上述代码中,我们定义了一个名为DoubanTop250Item的Item,需要在douban_top250/items.py文件中定义该Item,以下是一个简单的例子: ```python import scrapy class DoubanTop250Item(scrapy.Item): rank = scrapy.Field() title = scrapy.Field() rating = scrapy.Field() quote = scrapy.Field() ``` 在上述代码中,我们定义了DoubanTop250Item包含以下字段: - rank:电影排名; - title:电影名称; - rating:电影评分; - quote:电影的经典语录。 5. 运行Spider 在完成上述步骤后,就可以运行Spider开始爬取豆瓣电影TOP250了,可以通过以下命令来运行Spider: ``` scrapy crawl douban_spider -o douban_top250.csv ``` 该命令将会运行名为douban_spider的Spider,并将结果保存到douban_top250.csv文件中。 以上就是使用Scrapy爬取豆瓣电影TOP250的基本步骤,希望能对您有所帮助。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值