使用青果代理IP爬取豆瓣TOP250电影数据
本文目录
- 1.1 引言
- 1.2 为什么需要代理IP?
- 2.1 青果代理IP的优势
- 2.2 获取青果代理IP
- 2.3 实战爬取豆瓣TOP250电影
- 3.总结
1.1 引言
电商平台、社交平台、自媒体等平台大数据爆炸的现在,采用爬虫采集数据已经是当下最高效、精准地获取数据方式,但在采集过程重是不是经常出现:爬虫程序频繁地访问目标网站,一旦判断为异常请求,网站便会对IP进行封禁或限制访问。这导致爬虫程序无法持续采集数据,影响了数据获取的完整性与效率!
为了避免上述问题,代理IP成为爬虫稳定运行的关键技术。
1.2 为什么需要代理IP?
代理IP通过不断切换访问源IP,模拟不同的用户请求,从而绕过反爬机制,避免因频繁访问同一网站而被封锁。通过代理IP,爬虫可以分散单一IP的请求负载,降低单个IP的访问频率,避免触发网站的安全机制。
本人测试过很多的代理IP品牌,有一款用下来体验很不错的品牌——青果网络
2.1 青果代理IP的优势
在一众提供代理IP的品牌中,青果代理ip名气还是挺大的,算是国内代理的头部品牌,主要是确实很好用;无论是小规模的定向抓取,还是大规模的高频次采集,青果都能提供稳定的支持,帮我解决了很多采集的需求。
青果代理IP的最大优势在于其灵活性和相应速度:
需求灵活性:用户可以根据自己的需求,从多种IP资源池中选择最合适的方案,并根据不同的采集任务灵活设置IP提取方式和存活时长。无论是1分钟的短时有效IP,还是30分钟的长效连接,青果都能为用户提供精准的匹配,确保采集任务的顺利进行。
极度相应:经测试访问百度的响应时间<1秒,可以说是超快的的访问速度,可以满足大批量的采集需求。还有优质的高匿池子结合价格简直是加分项,算得上是一款高性价比的HTTP代理。
当然如果是新用户,不妨薅一下他们家的羊毛:6小时免费试用活动,接下来我将给大家展示如何使用青果代理ip“零元购”爬取豆瓣TOP250电影数据
2.2 获取青果代理IP
1、首先我们打开青果官网,点击右上角去注册一个账号。https://www.qg.net
2、接着选择6小时免费的产品免费套餐
3、接着进一步点击提取IP
点击打开链接看看是否有获取到IP。
这里一般会成功返回一个IP值:,那这样就代表获取成功了。
4、使用青果API获取IP地址
我们可以用代码来获取这个API地址,代码如下所示,只需要把url替换成自己复制的链接即可。
import requests
import time
def get_ip():
url= "放置自己复制的IP地址"
while 1:
try:
r = requests.get(url, timeout=10)
except:
continue
ip = r.text.strip()
if '请求过于频繁' in ip:
print('IP请求频繁')
time.sleep(1)
continue
break
proxies = {
'https': '%s' % ip
}
return proxies
if __name__ == '__main__':
proxies = get_ip()
print(proxies)
2.3 实战爬取豆瓣TOP250电影
在下面这段代码中,我们逐步实现了对豆瓣TOP 250电影的抓取。通过编写函数处理请求、解析HTML内容、提取数据并保存到Excel文件,完成了整个爬取流程。以下是代码的详细分析:
- 页面请求:page_request() 函数
page_request()函数用于发送HTTP请求来访问豆瓣TOP 250页面。函数接受目标URL和请求头ua作为参数,使用requests.get方法获取页面内容。通过指定请求头中的User-Agent来模拟真实用户访问,避免触发简单的反爬机制。
def page_request(url, ua, proxies):
try:
response = requests.get(url=url, headers=ua, proxies=proxies, timeout=10)
response.raise_for_status()
return response.content.decode('utf-8')
except requests.RequestException:
print("请求失败")
return None
- 页面解析:page_parse() 函数
page_parse()函数使用BeautifulSoup解析HTML内容并提取我们所需的信息,包括电影排名、名称、评分和电影链接。使用CSS选择器定位到具体的页面元素:
●positions提取电影的排名信息。
●names提取电影的名称。
●ratings提取评分。
●hrefs提取电影详情页的链接。
数据最终被整理为字典形式,存储在列表data中。
def page_parse(html):
soup = BeautifulSoup(html, 'lxml')
positions = soup.select('#content > div > div.article > ol > li > div > div.pic > em')
names = soup.select('#content > div > div.article > ol > li > div > div.info > div.hd > a > span:nth-child(1)')
ratings = soup.select('#content > div > div.article > ol > li > div > div.info > div.bd > div > span.rating_num')
hrefs = soup.select('#content > div > div.article > ol > li > div > div.info > div.hd > a')
data = []
for i in range(len(names)):
data.append({
'排名': positions[i].get_text(),
'电影名称': names[i].get_text(),
'评分': ratings[i].get_text(),
'链接': hrefs[i].get('href')
})
return data
- 主程序:批量爬取并保存数据
在__main__主程序部分,我们定义了循环遍历豆瓣TOP 250的每页,构建不同的URL,每页包含25部电影,通过startNum参数控制页面的起始位置。每次请求的HTML内容经过解析并提取所需的数据,然后追加到all_data列表中。最后将所有页面的数据汇总并写入Excel文件。
if __name__ == "__main__":
print('**************开始爬取豆瓣电影**************')
ua = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4421.5 Safari/537.36'
}
# 获取一次代理 IP
proxies = get_ip()
if not proxies:
print("无法获取代理 IP,程序退出")
else:
all_data = [] # 存储所有电影数据
for startNum in range(0, 251, 25):
url = f"https://movie.douban.com/top250?start={startNum}"
html = page_request(url=url, ua=ua, proxies=proxies)
if html:
movies_data = page_parse(html=html)
all_data.extend(movies_data)
print(f'**************第{startNum // 25 + 1}页爬取完成**************')
else:
print(f"第{startNum // 25 + 1}页爬取失败,跳过该页")
time.sleep(1) # 暂停一秒以防止过于频繁的请求
# 将数据转换为 DataFrame
df = pd.DataFrame(all_data)
# 写入 Excel 文件
df.to_excel("豆瓣电影爬取.xlsx", index=False)
print('**************所有数据已写入 Excel 文件**************')
4、加入青果代理IP进行爬取
通过上面的代码,我们只需要把获取代理IP代码加进来即可。
def get_ip():
url = "这里放对应获取IP的API即可"
try:
r = requests.get(url, timeout=10)
ip = r.text.strip()
if '请求过于频繁' in ip:
print('IP请求频繁,请稍后再试')
return None
print(f"成功获取代理IP: {ip}")
return {'https': f'https://{ip}'}
except requests.RequestException:
print("获取代理IP失败")
return None
5、完整效果如下
把所有代码整合一起之后,就可以进行爬取了,获取到如下的数据。
3.总结
本次研究通过网络爬虫技术成功采集了豆瓣TOP 250电影数据,从网页请求、内容解析到数据存储,实现了自动化的数据获取流程。在这一过程中,合理配置请求头和分页逻辑,基本解决了反爬机制带来的访问限制,为进一步的数据分析和应用提供了基础数据支持。
在数据采集过程中,青果网络的代理IP作为优质的代理解决方案,提供动态和短效的IP资源,全国覆盖200多个城市,日流水超600万,为用户提供了多种IP资源池和存活时长选择,适配不同业务需求,是网络爬虫和数据采集的理想选择。
青果代理IP的6小时免费试用,让用户能够在真实环境中测试其性能和稳定性,确保其适应具体的业务场景。无论是研究数据趋势、市场分析,还是进行用户行为的洞察,青果代理IP都将为您的数据采集工作提供强有力的支持。欢迎大家尝试使用青果网络的代理IPhttps://www.qg.net/,体验高效、稳定的数据采集之旅!