如何稳定爬取接口数据

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)-CSDN博客文章浏览阅读1.5k次,点赞70次,收藏11次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、app自动化测试、接口测试、性能测试、自动化测试、安全测试及一些常问到的人力资源题目。最主要的是他还收集了像阿里、华为这样的大厂面试真题,还有互动交流板块……​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5501​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5501​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5501​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5501icon-default.png?t=N7T8https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5501

数据爬取和反爬取是一场攻防战,虽然整体技术难度不深,但非常有意思。

python爬虫工具

Python下面用于做爬虫的工具很多:

•专门的爬虫的框架:

Scrapy: 一个基于Python的开源网络爬虫框架,用于快速高效地提取网站数据。

BeautifulSoup: 一个用于解析HTML和XML文档的Python库,可以帮助用户从网页中提取数据。

•网页自动化工具:

Selenium: 一个自动化测试工具,也可以用于网页爬取,可以模拟用户在浏览器中的操作,如点击、输入等。

playwright: 通样可以用于网页爬取和数据提取,它提供了丰富的功能和灵活的操作方式,使得开发者可以轻松地编写复杂的网页爬取脚本。

•http请求工具:

Requests: 一个简单易用的HTTP库,可以用于发送HTTP请求和获取网页数据。

HTTPX: 一个基于Python的现代、高性能的HTTP客户端库,用于发送HTTP请求和处理响应。

我刚好前段时间得到了一个爬虫的需求,基于需求简单介绍一下使用。

HTTPX调用接口

•安装

pip install httpx
pip install h2

之所以选择 HTTPX 是因为Web 框架是用异步实现的,爬取数据是Web项目的一个子需求,最重要的是可以通过调用接口获取想要的数据。​​​​​​​

import asyncio
import httpx


async def main():

    async with httpx.AsyncClient(verify=False, http2=True) as client:
        for i in range(1000):
            try:
                response = await client.get("https://api-xx.samaple.com/api/some/list", timeout=10)
                details = response.json()
                print(details)
            except BaseException as e:
                print(f"请求超时、异常: {e}")


if __name__ == '__main__':
    asyncio.run(main())

说明:

•verify参数的默认值为True,表示开启证书验证。如果设置为False,则会关闭证书验证,这样可以在一定程度上提高请求速度,但也会降低安全性。•h2参数用于指示是否启用HTTP/2协议。

伪造 User-Agent

但是,很快请求就异常报错,但是通过浏览器调用接口是可行的。

fake-useragent 是专门用于伪造 User-Agent的一个库。

Github: https://github.com/fake-useragent/fake-useragent

•安装

pip install fake-useragent

使用方式:​​​​​​​

import asyncio
import httpx
from fake_useragent import UserAgent


async def user_agent():
    """
    随机生成请求头:User-Agent
    :return:
    """
    ua = UserAgent()
    user_agent_ = ua.random
    return user_agent_


async def main():

    async with httpx.AsyncClient(verify=False, http2=True) as client:
        for i in range(10):
            ua = await user_agent()
            headers = [("User-Agent", ua)]
            try:
                response = await client.get("https://api-xx.samaple.com/api/some/list",  headers=headers, timeout=10)
                details = response.json()
                print(details)
            except BaseException as e:
                print(f"请求超时、异常: {e}")


if __name__ == '__main__':
    asyncio.run(main())

这样每次调用的时候都会随机生成一个请求头。

使用代理IP

使用固定IP很容易被封,那么就需要随机使用代理IP。很多网站提供这种功能。

例如:https://www.siyetian.com/

需要实名认证,每天可以领取20个代理IP。

图片

输入你当前电脑的IP地址,生成API 链接。该链接每次调用可以生成一个IP。

使用方式:​​​​​​​

import asyncio
import httpx


async def fetch_proxy() -> str:
    """
    获取代理IP
    """
    proxy_api_url = 'http://proxy.siyetian.com/apis_get.html?token=xxxxx'
    async with httpx.AsyncClient() as client:
        resp = await client.get(proxy_api_url, timeout=5)
        ip = resp.text
        return ip


async def main():
    proxy_ip = fetch_proxy()
    proxies = {
        "all://": f"http://{proxy_ip}",
    }
    async with httpx.AsyncClient(proxies=proxies, verify=False, http2=True) as client:
        for i in range(10):
            try:
                response = await client.get("https://api-xx.samaple.com/api/some/list", timeout=10)
                details = response.json()
                print(details)
            except BaseException as e:
                print(f"请求超时、异常: {e}")


if __name__ == '__main__':
    asyncio.run(main())

到此,这个接口就可以比较稳定的爬取接口数据了。

声明:本文内容不针对任何网站,介绍技术仅供学习。

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 786229024,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】在这里插入图片描述
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值