首页 » 谷歌 » 目标数据源分析本次待抓取的目标【待】【】

目标数据源分析本次待抓取的目标【待】【】

 

谷歌锁区号/谷歌邮箱老号-购买商城
谷歌play地区代改
Google Voice号码支持自助购买
谷歌锁区号购买商城]
美区VISA卡代开-可以用于aws,azure,FB,谷歌,亚马逊,速卖通,eBay,独立站,paypal等支付
如果您还有其他问题可以加我电报交流。
电报号:telegram:@tianmeiapp

目标数据源分析

这次要抓取的目标地址是:

米友俱乐部

谷歌地球专业版注册页面_谷歌开发者页面_谷歌插件怎么修改页面

本页面为图片列表页面,数据以下拉浏览器刷新的形式加载。

分析这个页面的数据,需要使用谷歌浏览器自带的开发者工具,通过F12唤醒开发者工具。

这时第一个问题就出现了,网站使用JS调试来防止用户唤醒开发者工具。

即网页JS注入如下代码:

(function anonymous() {
  debugger;
});

添加防爬方法后,打开开发者工具,如下图所示。

谷歌开发者页面_谷歌插件怎么修改页面_谷歌地球专业版注册页面

解决方法很简单,禁用浏览器JS调试,点击开发者工具右侧显示的按钮,屏蔽反爬的方法。

谷歌开发者页面_谷歌地球专业版注册页面_谷歌插件怎么修改页面

爬取目标:

从本网站抓取图片,目标为 3000 张图片。

使用的框架是:

库,json 模块。

其他技术堆栈添加:

JSON格式数据解析

目标网址规则:

获取列表页的数据规则,使用开发者工具中的视图配合浏览器的滚轮操作。

谷歌插件怎么修改页面_谷歌地球专业版注册页面_谷歌开发者页面

上图1/2/3是点击步骤,滚动浏览器,寻找数据接口,捕获浏览器向视图下的网站服务器发送的所有数据请求,查看浏览器响应。

为了得到接口,可以反复测试,直到确定数据所在的接口,即在位置3的视图中,可以找到网页中的图片地址或文字。

快速搜索界面方法,在开发者工具窗口,按Ctrl+F键唤醒搜索工具,输入要查询的文字,回车搜索,直接定位界面地址即可。

谷歌开发者页面_谷歌插件怎么修改页面_谷歌地球专业版注册页面

以上步骤是检索数据接口的常用方法之一,后续博客中会反复提及,请务必掌握。

最终的数据接口如下:

https://bbs-api.mihoyo.com/post/wapi/getForumPostList?forum_id=47&gids=5&is_good=false&is_hot=false&last_id=6309404&page_size=20&sort_type=2

接口是通过GET方式访问的,这里的参数可以通过名字来猜测:

继续分析图片详情页,打开任意详情页。

/dby//

本页详情页的地址只有最后一个数字发生了变化,可以从列表页界面获取该数字。

通过开发者工具继续抓取界面,获取图片详情页面。数据也是基于接口返回的。过滤后得到的界面如下。

https://bbs-api.mihoyo.com/post/wapi/getPostFull?gids=5&post_id=6270759&read=1

目标数据源分析完成后,即可进行基本需求描述。

排序要求如下。列表页不能批量生成,需要指定起始ID,下一次抓取是根据ID值;基于列表页接口的返回,直接拼接详情页的接口;获取详情页的图片数据;数据被保存;获得3000。拍完照片,开始欣赏。代码执行时间

在本次要爬取的目标网站的编码过程中,发现该网站已经验证了请求头,这是最基本的反爬取方式。

在代码文件中,先写一个通用的请求函数,将请求头中的HOST提取出来。默认HOST设置为,这个值可以通过开发者工具获取,获取方法可以参考代码后的示意图。

# 请求函数
def request_get(url, ret_type="text", timeout=5, encoding="utf-8", host="bbs-api.mihoyo.com"):
    headers = {

        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36",
        "Origin": "米游社-miHoYo官方社区-技术宅拯救世界",
        "Referer": "米游社-miHoYo官方社区-技术宅拯救世界",
        "Host": host
    }
    res = requests.get(url=url, headers=headers, timeout=timeout)
    res.encoding = encoding
    if ret_type == "text":
        return res.text
    elif ret_type == "image":
        return res.content
    elif ret_type == "json":
        return res.json()

谷歌地球专业版注册页面_谷歌开发者页面_谷歌插件怎么修改页面

上面的代码添加了 JSON 格式的数据返回。对于这种格式的数据谷歌开发者页面,可以参考字典知识进行操作。

从起始种子中抓取

使用上面得到的列表页数据,将列表页地址格式化为f-形式,也可以使用其他形式,如"".()或%语法格式化字符串。

main函数的起始值,你可以用你得到的值,也可以用我下面给你的值。

# 抓取函数

def main(last_id):
    # 起始页面
    url = f"https://bbs-api.mihoyo.com/post/wapi/getForumPostList?forum_id=47&gids=5&is_good=false&last_id={last_id}&is_hot=false&page_size=20&sort_type=2"
    res_json = request_get(url, ret_type="json", timeout=5)
    if res_json["retcode"] == 0:
        for item in res_json["data"]["list"]:
            # 抓取内页数据
            detail(item["post"]["post_id"])
if __name__ == '__main__':
    main(6356513)

该接口返回的JSON数据格式如下。重要的参数是 , , list ,数据存储在 list 中。

谷歌开发者页面_谷歌地球专业版注册页面_谷歌插件怎么修改页面

调用图片内页接口

上述代码的最终目的是获取值,因为值是后续接口的必要参数。改进功能,代码如下:

# 保存图片
def save_image(image_src):
    content = request_get(image_src, "image", host="upload-bbs.mihoyo.com")
    with open(f"{str(time.time())}.jpg", "wb") as f:
        f.write(content)
        global total

        total += 1
        print(f"保存第{total}张图片")
# 抓取内页数据
def detail(post_id):
    url = f"https://bbs-api.mihoyo.com/post/wapi/getPostFull?gids=5&post_id={post_id}&read=1"
    res_json = request_get(url, ret_type="json", timeout=5)
    if res_json["retcode"] == 0:
        image_list = res_json["data"]["post"]["image_list"]
        for img in image_list:
            img_url = img["url"]
            if (img_url.find("weigui")) < 0:
                save_image(img_url)

声明一个全局变量total,用于记录爬取图片的总数。在获取图片数据的时候发现有些Coser图片是非法的,估计是尺度太大的原因。返回的图片链接包含字符串.jpg,因此有针对性地进行数据清洗。.

global total
if __name__ == '__main__':
    global total
    total = 0
    main(6356513)

迭代爬取

此时代码只爬取一页数据,无法达到我们3000张图片的目标。修改main函数实现简单递归。

# 抓取函数
def main(last_id):
    # 起始页面
    url = f"https://bbs-api.mihoyo.com/post/wapi/getForumPostList?forum_id=47&gids=5&is_good=false&last_id={last_id}&is_hot=false&page_size=20&sort_type=2"
    res_json = request_get(url, ret_type="json", timeout=5)
    if res_json["retcode"] == 0:
        for item in res_json["data"]["list"]:
            # 抓取内页数据
            detail(item["post"]["post_id"])
    if res_json["data"]["last_id"] != "":
        return main(res_json["data"]["last_id"])

运行代码。这时候图片就一张一张的存进我们的电脑里了。为了防止爬取过程中超时,建议添加try-catch跳过错误。

谷歌插件怎么修改页面_谷歌开发者页面_谷歌地球专业版注册页面

谷歌开发者页面_谷歌插件怎么修改页面_谷歌地球专业版注册页面

完整代码下载地址:Dream / 120 Cases

3000 图片下载地址:自行爬取谷歌开发者页面,图片包过大。

———————————————

版权声明:本文为CSDN博主“梦橡皮擦”原创文章,遵循CC4.0 BY-SA版权协议。转载请附上原文出处链接和本声明。

原文链接:通过爬虫发现60%的女装大佬都在野外行走,一个搞笑的高级互联网bug - CSDN博客

谷歌地球专业版注册页面_谷歌插件怎么修改页面_谷歌开发者页面

谷歌锁区号/谷歌邮箱老号-购买商城
谷歌play地区代改
Google Voice号码支持自助购买
谷歌锁区号购买商城]
美区VISA卡代开-可以用于aws,azure,FB,谷歌,亚马逊,速卖通,eBay,独立站,paypal等支付
如果您还有其他问题可以加我电报交流。
电报号:telegram:@tianmeiapp

原文链接:目标数据源分析本次待抓取的目标【待】【】,转载请注明来源!

0