Python采集海外电影信息,Roxlabs全球IP代理轻松搞定

    • 一、为什么要学会应用 IP 代理技术
    • 二、采集海外电影信息爬虫实战
      • 2.1 选择目标网站并生成代理
      • 2.2 编写爬虫并设置代理
      • 2.3 运行爬虫
      • 2.4 处理数据
      • 2.5 完整代码
    • 三、Roxlabs 代理及优势分析
    • 四、快速应用Roxlabs代理功能
      • 4.1 领免费流量
      • 4.2 代理类型
      • 4.3 获取代理
      • 4.4 配置代理设置
      • 4.5 开始数据采集
    • 五、总结


一、为什么要学会应用 IP 代理技术

在数字化飞速发展的今天,网络已成为人们获取信息、交流数据的重要平台,数据成为了最宝贵的资源之一。然而许多网站和服务出于各种原因,使得有价值的数据变得难以获取;此外在互联网时代,个人隐私几乎成为了奢侈品。我们每一次浏览网站、搜索内容都可能被第三方追踪和记录,这不仅侵犯了我们的隐私权,还可能带来安全风险。

在这里插入图片描述
IP 代理技术的出现为以上难题提供了解决方案。简单来说,IP 代理就是将客户端的请求集中到代理服务器上,然后由代理服务器来处理这些请求并返回结果。由代理服务器代替用户与目标服务器进行通信,使得我们的网络行为更加私密,从而保护个人信息不被滥用。不仅如此,通过 IP 代理还可以轻松获取到更多的全球公开数据资源。

二、采集海外电影信息爬虫实战

在本实战案例中,我们将基于 Python 使用 Roxlabs IP 代理获取海外的 100 部电影信息。

在这里插入图片描述

2.1 选择目标网站并生成代理

我们爬取的目标网址是 flickchart。这是一个结合了电影评价、排行与社交功能的综合性电影类网站。

在这里插入图片描述
进入 Roxlabs 后台设置白名单。这一步是必要的,设置白名单是为了保证本机 IP 可以对目标网站进行正常的操作。

进入 Roxlabs 后台,选择“IP白名单”模块,将本机 IP 填入;
在这里插入图片描述
在这里插入图片描述
随后生成代理,相关信息会在 Roxlabs 的“获取代理”模块自动展现;

在这里插入图片描述
此时前期准备工作就完成了。

2.2 编写爬虫并设置代理

先写一个简单的爬虫框架;

# 使用requests库获取网页原始内容
import requests

# 首先定义爬取的网址
target_url = "https://www.flickchart.com/charts.aspx?perpage=100"

# 设置请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36"
}


response = requests.get(target_url, headers=headers)

if response.status_code == 200:
    print(response.text)

随后添加和设置代理,这里需要用到 Roxlabs 生成的代理列表;

在这里插入图片描述

# 使用requests库获取网页原始内容
import requests

# 首先定义爬取的网址
target_url = "https://www.flickchart.com/charts.aspx?perpage=100"

# 设置请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36"
}

# 设置代理
proxies = {
    "http": "http://pr.roxlabs.cn:4600:user-jingzhi001-sessid-T5mEkR32-sesstime-10-keep-true:jingzhi001",
    "https": "https://pr.roxlabs.cn:4600:user-jingzhi001-sessid-T5mEkR32-sesstime-10-keep-true:jingzhi001"
}

response = requests.get(target_url, headers=headers, proxies=proxies)

if response.status_code == 200:
    print(response.text)

2.3 运行爬虫

运行代码,可以看到结果正常输出;

在这里插入图片描述
最后试着查找一部电影名字看看是否获取到了所需要的数据,比如搜《The Empire Strikes Back》;

在这里插入图片描述
搜索发现结果无误;

在这里插入图片描述
可以查出结果说明爬虫没有问题,已经获得需要的数据,接下来就应该处理数据了。

2.4 处理数据

处理网页数据这里使用的工具是 BeautifulSoup。步骤如下:

导入包;

# 使用BeautifulSoup库解析网页内容
from bs4 import BeautifulSoup

解析网页;

if response.status_code == 200:
    soup = BeautifulSoup(response.text, "html.parser")

确定网页结构;

在这里插入图片描述
开始解析,首先定义一个电影列表;

movie_list = []

然后解析数据;

# 寻找元素div,类名为chartEntry,下面的movieInfo
for movie in soup.find_all("div", class_="chartEntry"):
    # 将类名movieTitle的文本内容获取到
    movie_title = movie.find("h2", class_="movieTitle")
    # 电影名是movie_title下第一个a标签的文本内容
    movie_name = movie_title.find("a").text
    # movie_name有两行,第一行是电影名,第二行是链接,拆分
    _, movie_name, movie_url, _ = movie_name.split("\n")
    # 电影上映年份是在movie_title的第二个a标签的文本内容
    movie_year = movie_title.find_all("a")[1].text
    # p标签类名为director,下的第一个a标签文本内容是导演名
    movie_director = movie.find("p", class_="director").find("a").text

接下来再加入电影列表;

movie_list.append({
    "name": movie_name,
    "year": movie_year,
    "director": movie_director,
    "url": movie_url,
})

由于这个网站一共有 5 页,所以这里将 target_url 修改了一下;

# 首先定义爬取的网址
page_index = 1
target_url = f"https://www.flickchart.com/charts.aspx?perpage=100&page=${page_index}"

然后将爬取的这里定义成了一个函数;

def get_movie_list():
    global page_index, target_url
    response = requests.get(target_url, headers=headers)

    if response.status_code == 200:
    # ... 后面的代码

输出电影;

for page_index in range(1, 5):
    get_movie_list()

为了方便,最后将爬取到的电影写入 CSV 文件;

# 写出到csv文件
import csv

with open("movie_list.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.DictWriter(f, fieldnames=["name", "year", "director", "url"])
    writer.writeheader()
    writer.writerows(movie_list)
print("写入完成")

最后运行代码,结果如下,电影列表已经列了出来;

在这里插入图片描述
打开 CSV 文件看看,效果不错。至此整个海外电影爬虫实战结束。

在这里插入图片描述

2.5 完整代码

# 使用requests库获取网页原始内容
import requests
# 使用BeautifulSoup库解析网页内容
from bs4 import BeautifulSoup
# 写出到csv文件
import csv

# 首先定义爬取的网址
page_index = 1
target_url = f"https://www.flickchart.com/charts.aspx?perpage=100&page=${page_index}"

# 设置请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36"
}

# 设置代理
# proxies = {
#     "http": "http://pr.roxlabs.cn:4600:user-jingzhi001-sessid-T5mEkR32-sesstime-10-keep-true:jingzhi001",
#     "https": "https://pr.roxlabs.cn:4600:user-jingzhi001-sessid-T5mEkR32-sesstime-10-keep-true:jingzhi001"
# }
movie_list = []


def get_movie_list():
    global page_index, target_url
    response = requests.get(target_url, headers=headers)

    if response.status_code == 200:
        soup = BeautifulSoup(response.text, "html.parser")
        # 寻找元素div,类名为chartEntry,下面的movieInfo
        for movie in soup.find_all("div", class_="chartEntry"):
            # 将类名movieTitle的文本内容获取到
            movie_title = movie.find("h2", class_="movieTitle")
            # 电影名是movie_title下第一个a标签的文本内容
            movie_name = movie_title.find("a").text
            # movie_name有两行,第一行是电影名,第二行是链接,拆分
            _, movie_name, movie_url, _ = movie_name.split("\n")
            # 电影上映年份是在movie_title的第二个a标签的文本内容
            movie_year = movie_title.find_all("a")[1].text
            # p标签类名为director,下的第一个a标签文本内容是导演名
            movie_director = movie.find("p", class_="director").find("a").text
            movie_list.append({
                "name": movie_name,
                "year": movie_year,
                "director": movie_director,
                "url": movie_url,
            })
    page_index += 1


for page_index in range(1, 5):
    get_movie_list()

#   打印电影列表
for movie in movie_list:
    print(movie)

with open("movie_list.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.DictWriter(f, fieldnames=["name", "year", "director", "url"])
    writer.writeheader()
    writer.writerows(movie_list)
print("写入完成")

三、Roxlabs 代理及优势分析

在以上的案例当中,我们的整个过程是基于 Roxlabs 代理实现的,用到了 Roxlabs 的 IP 白名单功能和动态住宅 IP 资源。

作为一个专注于为用户提供高质量数据采集代理资源的服务平台,我经过实际上手使用和综合多家 IP 代理商进行对比,发现 Roxlabs 具有多重优势:

  • 全球覆盖和超大资源量。Roxlabs 的代理网络遍布全球 200 多个国家和地区,拥有超过 1000 万的真实住宅 IP 资源。这种广泛的覆盖和庞大的IP资源池使得 Roxlabs 能够满足多种业务需求。

  • 不限并发会话。Roxlabs 支持无限并发会话,高带宽,无需额外费用,满足您的业务拓展需求。

  • 城市级定位。Roxlabs 提供国家、城市和州级精准定位 IP,支持 HTTP(S)/Socks5 代理协议。

在这里插入图片描述

  • 自定义 IP 时效。Roxlabs 动态住宅支持 1-1440 分钟自定义 IP 时效,可以根据业务需求自主设定会话时长,自由设置 API 提取导出格式。

  • 数据统计功能。Roxlabs 个人中心实时统计代理使用数据,我们可以随时查看账户余额信息和流量使用情况,支持添加多个 IP 白名单和认证账户,更有 IP 管理、认证账户管理等功能。

  • 高性价比。动态住宅流量套餐支持 免费试用 ,流量不过期,低至¥5/G。可以根据自己的需求选择不同的代理类型和套餐,Roxlabs 还提供定制化服务,满足特定业务场景的个性化需求。

基于以上优势,Roxlabs 在爬虫采集、跨境电商、市场调研、网络安全等方面都有着相当成熟的解决方案。

四、快速应用Roxlabs代理功能

为了让大家更深入的了解 Roxlabs,在这里快速演示一下它的使用功能。

4.1 领免费流量

访问 Roxlabs 的官方网站 roxlabs.cn 进行注册并登录账号;

注册成功后进行实名认证,认证完成流量直接到账,个人认证赠送 500MB 流量,企业认证赠送 1G 流量;

4.2 代理类型

根据业务需求选择适合自己的代理套餐,Roxlabs 为用户提供动态住宅 IP、静态住宅 IP、独享数据中心 IP 等多种优质代理资源;

在这里插入图片描述

4.3 获取代理

获取代理有两种方式,一种是 API 提取,另一种是账密认证。

现在演示账密认证方式获取代理;

使用账密认证首先需要在 Roxlabs 个人后台“认证账户”板块添加认证账户;

在这里插入图片描述
然后进入“获取代理”板块,选择“账号密码验证”生成方式,选择我们刚刚添加的认证账户;

此时获取到的 IP 就显示在本页面的代理列表中了;

在这里插入图片描述

4.4 配置代理设置

使用代码(Python)设置代理如下:

import _thread
import time
import requests

# 设置请求头
headers = {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
    "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Mobile/14G60 MicroMessenger/6.5.19 NetType/4G Language/zh_TW",
}

# 测试地址
mainUrl = 'https://ipinfo.io'

def testUrl():
    # 设置帐密代理
    proxy = {
        'http': 'http://认证账户名:认证账户密码@代理服务器地址:代理服务器端口',
        'https': 'http://认证账户名:认证账户密码@代理服务器地址:代理服务器端口',
    }
    try:
        res = requests.get(mainUrl, headers=headers, proxies=proxy, timeout=10)
        print(res.status_code, res.text)
    except Exception as e:
        print("访问失败", e)
        pass

# 开启10个线程进行测试
for i in range(0, 10):
    _thread.start_new_thread(testUrl, ())
    time.sleep(0.1)

time.sleep(10)

4.5 开始数据采集

代理设置完成后就可以开始进行数据采集了。选择自己擅长的采集工具,在进行数据采集的过程中,我们也可以随时访问 Roxlabs 的个人中心,查看代理的使用情况。

Java、Node、PHP 等代码设置方式参见 Roxlabs 官网。

在这里插入图片描述

五、总结

作为一个专注于提供高质量住宅 IP 代理服务的平台,Roxlabs 为用户提供了一个全球范围访问网络的新视角。其全球覆盖、高质量服务、强大的数据采集能力以及严格的合规性和安全性保障,使得它成为了许多企业和个人在进行在线活动和数据采集时的首选工具。无论是保护个人隐私还是进行商业分析,Roxlabs 都能够为用户提供专业、可靠的代理解决方案。


注册领取免费流量,更多代理应用教程详见 Roxlabs官网 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/556409.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

进销存是什么?怎么快速上手制作进销存报表?

在现代商业运营中,进销存管理是企业持续稳健发展的关键组成部分。为了更好地把握库存状况、合理调配资源、提高决策效率,企业采用进销存报表是一种极为有效的手段。本文将从进销存的基本概念、报表的内容和意义,以及如何制作进销存报表等方面…

opencv的cmake报错

opencv编译报错 CMakeDownloadLog.txt #use_cache "D:/opencv/.cache" #do_unpack "ippicv_2021.8_win_intel64_20230330_general.zip" "71e4f58de939f0348ec7fb58ffb17dbf" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/1…

Ctags的安装和使用

ctags 是一个代码跟踪软件 由于在源码中,具有海量的代码,如果我们在源码中找特定的代码,需要大量时间,但是ctags则可以快速寻找 安装: sudo apt-get install ctagsctags使用 ctrl] //代码跟踪 crlT //代码返回我们…

鸿蒙入门06-常见装饰器( 简单装饰器 )

装饰器是鸿蒙开发中非常重要的一个环节因为在很多地方我们都需要用到装饰器并且如果我们想高度的复用, 那么装饰器就是必不可少的一环接下来我们就来介绍一些常见的装饰器注意 : 所有装饰器首字母大写 Entry 用来装饰 struct 使用表示页面的入口 Component 装饰 struct, …

算法课程笔记——常用库函数

memset初始化 设置成0是可以每个设置为0 而1时会特别大 -1的补码是11111111 要先排序 unique得到的是地址 地址减去得到下标 结果会放到后面 如果这样非相邻 会出错 要先用sort排序 O(n)被O(nlogn)覆盖

Axure引用ECharts图表 解决火狐浏览器出错

Axure原型添加Echarts图表,没耐心看文章的可以直接下载示例 Axure中使用ECharts图表示例 1. 打开Axure新建页面 2. 页面添加元件 元件类型随意,矩形、动态面板、热区、图片 甚至段落都可以3. 命名元件 随意命名,单个页面用到多个图表时名…

【目标检测】Focal Loss

Focal Loss用来解决正负样本不平衡问题,并提升训练过程对困难样本的关注。 在一阶段目标检测算法中,以YOLO v3为例,计算置信度损失(图中第3、4项)时有目标的点少,无目标的点多,两者可能相差百倍…

为主机配置IP

第一种方法:nmcli #nmcli connection modify eth0 ipv4.method manual ipv4.addresses 172.25.254.100/24 ipv4.gateway 172.25.254.2 ipv4.dns 114.114.114.114 autoconnect yes #nmcli c up etho //激活网卡命令(网卡早就配好,只是修改ip就不用输入这条命令了) 第二…

SpringMVC(五)【拦截器】

前言 今天来把 SpringMVC 最后一部分学完,虽然课时很短,但是学起来还是很慢的,不过确收获很大。不得不感慨学大数据确实有必要把 SSM、SpringBoot 等各种 JavaEE 技术好好学一学,收获很大,尽管我们到现在 Java 代码写了…

循环双链表的操作

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 每一个裂缝都是为透出光而努力&#…

BIM数据管理快速指南

在我的日常工作中,作为数字协作协调员,我花费大量时间收集、检查和管理各种 BIM 数据。 很多次收到一组数据后我就无奈地举手——质量远远达不到我可以使用的程度。 然后我会开始一个普通的数据清理过程。 我无数次咒骂过这种情况——大多数建设项目的人…

qt 开发 缩放比例问题 修复中

在日常开中,需要开启 高分辨率的支持,windows环境下,不是 字体缩放,就是分辨率模糊,缩放机制,并且开启了150%缩放,有点搞不明白,最后还是不行,先做个记录,在找…

windows部署pgsql

1、下载:Download PostgreSQL Binaries 2、创建data目录作为数据目录 3、初始化 bin目录执行命令: .\initdb.exe -D E:\pgsql\data -E UTF-8 --localechs -U postgres -W 输入密码直到完成 4、启动数据库 .\pg_ctl.exe -D E:\pgsql\data -l logfil…

[大模型]MiniCPM-2B-chat WebDemo部署

MiniCPM-2B-chat WebDemo部署 MiniCPM-2B-chat 介绍 MiniCPM 是面壁智能与清华大学自然语言处理实验室共同开源的系列端侧大模型,主体语言模型 MiniCPM-2B 仅有 24亿(2.4B)的非词嵌入参数量。 经过 SFT 后,MiniCPM 在公开综合性…

吴恩达机器学习笔记:第 8 周-13 聚类(Clustering)13.1-13.2

目录 第 8 周 13、 聚类(Clustering)13.1 无监督学习:简介 第 8 周 13、 聚类(Clustering) 13.1 无监督学习:简介 在这个视频中,我将开始介绍聚类算法。这将是一个激动人心的时刻,因为这是我们学习的第一个非监督学习算法。我们…

Nexus 私服禁止 release 包覆盖发布

按照 maven 规范,对仓库中的包使用 snapshot 和 release 进行了区分,前者每次可以覆盖发布,会以时间的方式保留之前的包,并将 snapshot 包依赖下载地址指向最新覆盖发布的包,顾名思义快照包是为了解决我们开发测试过程…

React-css-in-js技术

​🌈个人主页:前端青山 🔥系列专栏:React篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来React篇专栏内容:React-css-in-js技术 目录 1、简介 2、定义样式与使用 3、样式继承 4、属性传递 1、简介 …

Shortened LLaMA:针对大语言模型的简单深度剪枝法

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 论文标题 & 发表会议:Shortened LLaMA: A Simple Depth Pruning for Large Language Models(ICLR 2024 Workshop) 论文地址:https://arxiv.org/abs/…

Swift-22-复杂数据类型

枚举enum 本小节讨论的枚举是一种基础类型,并不是对象。在Swift中,枚举有很多高级特性。 语法结构 enum EnumName : Type { case... },其中Type可以省略,{}中定义的枚举体至少包含一个case语句。 一个简单的实现如下&#xff0c…

【Lattice FPGA 开发】Modelsim与Diamond联合仿真

本文讲解Modelsim与Diamond进行联合仿真步骤,以及对遇到问题的解决与说明。 文章目录 软件版本0. Diamond设置文件为仿真文件特别注意 1. Diamond设置仿真软件为Modelsim2. Modelsim编译Lattice的库文件2.1 新建文件夹存放库文件2.2 Modelsim中建立新的仿真库2.2.1…