Python爬虫攻略(1)使用Requests获取LOL游戏攻略

news/2024/7/19 10:40:58 标签: 爬虫, python

申明:本文对爬取的数据仅做学习使用,不涉及任何商业活动,侵删

Python爬虫教程>1 使用Requests获取LOL游戏攻略

前戏

如果你想先了解一下什么是爬虫, 建议看一下这篇文章:学习爬虫前你需要知道这些

英雄联盟官方攻略站, 我们的目标是这些带有教学标签的文章

C:\Users\zh99294875\AppData\Roaming\Typora\typora-user-images\1572184837436.png

页面分析

这里大多是类似新闻的时效性文章, 因此推断 ->文章列表随时会更新 -> 动态加载

既然是动态加载, 那就说明要么是JS动态渲染, 要么就是ajax请求数据, 我们来逐个排除

先看ajax, 直接F12, 然后刷新页面并查看Network中的请求记录 (XHR即为ajax请求), 可以发现并没有类似文章数据的请求

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UO5O1qq6-1572190523014)(C:\Users\zh99294875\AppData\Roaming\Typora\typora-user-images\1572185942774.png)]

ps: 鼠标放在社区栏时, 会有一个社区文章的ajax请求(图中第4个), 其余的专栏都是没有ajax的


既然不是ajax, 那就是js, 来看js中的情况

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rYM3K5TO-1572190523020)(C:\Users\zh99294875\AppData\Roaming\Typora\typora-user-images\1572186017230.png)]

如图, 这个以zmMcnTargetContentList为开头的就是我们要找的, url如下:

https://apps.game.qq.com/cmc/zmMcnTargetContentList?r0=jsonp&page=1&num=16&target=27&source=web_pc&r1=jQuery19107274864195018544_1572185979166&_=1572185979169

其中参数page代表页码, num代表每页文章的个数

开始编码

爬虫代码如下

python">import requests
import re
import json


def get_data(m_url):
    # 向目标网站发送get请求
    resp = requests.get(url=m_url)
    # 清洗返回的响应, 清洗得到的是str
    resp_cleared = re.findall(r'.*?\(({.*?})\);', resp.text)[0]
    # str转化为json, 返回一个list, 包含文章数据
    return json.loads(resp_cleared)['data']['result']


def write_data(data_list):
    item = {}   # 定义一个空字典作为容器, 用来存放目标数据
    with open('lol_guide.json', 'w') as file:
        # 循环遍历文章list中的每一篇文章
        for data in data_list:
            # 写入容器
            item['Title'] = data['sTitle']
            item['URL'] = data['sRedirectURL']
            item['Date'] = data['sIdxTime']
            # 使用dumps, 将字典转化为json, 以便写入文件
            content = json.dumps(item, ensure_ascii=False) + '\n'
            file.write(content)     # 写入文件
            print('#写入成功 - {}'.format(item['Title']))


if __name__ == '__main__':
    url_mode ='https://apps.game.qq.com/cmc/zmMcnTargetContentList?r0=jsonp&page={}&num=16&target=27&source=web_pc'
    # 循环的目的是遍历下一页的url
    for i in range(1, 7):
        url = url_mode.format(i)
        write_data(get_data(url))

执行结果

得到的json数据如下

{"Title": "恶魔刺客轻松应对 降星枪剑体系重新崛起", "URL": "https://lol.tuwan.com/400929/", "Date": "2019-09-06 15:03:40"}
{"Title": "9.17云顶之弈三大新兴套路 贵族船长翻身成为主C", "URL": "https://www.lolfun.cn/news/detail.html?id=9031", "Date": "2019-09-05 16:16:50"}
{"Title": "9.18云顶新装备来袭!阵容搭配全面解读", "URL": "https://www.titanar.com/pub/propaganda/5757", "Date": "2019-09-05 16:15:08"}
...

参考链接

Request(官方) 快速上手

Python中的JSON库

正则表达式


http://www.niftyadmin.cn/n/1487923.html

相关文章

求基于fca算法的网页分类技术

大家好,我正在研究基于fca的网页分类算法,大家有精通这方面的可以给我一些指导吗。转载于:https://www.cnblogs.com/yychentracy/p/6659181.html

爬虫框架pyspider - 快速上手

爬虫框架pyspider - 快速上手 pyspider是国人开发的一款灵活便捷的爬虫框架, 相较于Scrapy框架来说, pyspider更适合被用于中小规模的爬取工作 了解更多: 爬虫框架pyspider个人总结(详细)熟悉 安装说明 pyspider 使用命令安装: pip install pyspide…

课堂作业05--6种质量属性

1.可用性战术:错误检测战术 对系统的所有信息的输入及数据处理进行异常的处理。尤其对信息进行填报时,编写异常类来捕获异常。 2.可修改性战术 维持语义一致性:指模块中责任之间的关系,可根据一组预期的变更来度量语义一致性。 使…

浅析数据加密

浅析数据加密 什么是加密? 加密的目的: 对数据的一种保护措施;核心是密码学 加密的类型: 常见的加密分以下三种类型: 单项加密 --> md5, base64对称加密 --> DES, AES非对称加密 --> RSA 加密过程: 明文的文件或…

[skill][https][ssl/tls] HTTPS相关知识汇总

结论前置: A 身份验证 证书, 服务器证书 B 密钥协商 RSA DHE / ECDHE PSK C 加密通信 加密通信采用对称加密,使用B阶段协商出来的密钥。 B 阶段如果使用 RSA 协商,可以用服务器证书在协商过程中解密到 C过程中的密钥。从而解密…

爬虫进阶知识解析网站中的JavaScript

js解析 引言 在了解如何调试js之前, 需要简单了解一下http的请求过程 1.DNS域名解析; 2.建立TCP连接; 3.发送HTTP请求; 4.服务器处理请求; 5.返回响应结果; 6.关闭TCP连接; 7.浏览器解析HTML&#xff1b…

Strom的trident小例子

上代码: 1 public class TridentFunc {2 3 /**4 * 类似于普通的bolt5 */6 public static class MyFunction extends BaseFunction{7 Override8 public void execute(TridentTuple tuple, TridentCollector collector) {9 In…

Python爬虫攻略(2)Selenium+多线程爬取链家网二手房信息

申明:本文对爬取的数据仅做学习使用,请勿使用爬取的数据做任何商业活动,侵删 前戏 安装Selenium: pip install selenium 如果下载速度较慢, 推荐使用国内源: pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple 本次爬虫…