您的位置:首页 > 健康 > 养生 > 武汉科技职业学院技能高考分数线_河北招投标信息网官网_建立网站的基本步骤_百度网站优化培训

武汉科技职业学院技能高考分数线_河北招投标信息网官网_建立网站的基本步骤_百度网站优化培训

2024/12/23 0:08:04 来源:https://blog.csdn.net/weixin_51484460/article/details/143996364  浏览:    关键词:武汉科技职业学院技能高考分数线_河北招投标信息网官网_建立网站的基本步骤_百度网站优化培训
武汉科技职业学院技能高考分数线_河北招投标信息网官网_建立网站的基本步骤_百度网站优化培训

本文目录

  • 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 timedef get_ip():
url= "放置自己复制的IP地址"while 1:try:r = requests.get(url, timeout=10)except:continueip = r.text.strip()if '请求过于频繁' in ip:print('IP请求频繁')time.sleep(1)continuebreakproxies = {'https': '%s' % ip}return proxies
if __name__ == '__main__':proxies = get_ip()print(proxies)

2.3 实战爬取豆瓣TOP250电影

在下面这段代码中,我们逐步实现了对豆瓣TOP 250电影的抓取。通过编写函数处理请求、解析HTML内容、提取数据并保存到Excel文件,完成了整个爬取流程。以下是代码的详细分析:

  1. 页面请求: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
  1. 页面解析: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
  1. 主程序:批量爬取并保存数据

在__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'}# 获取一次代理 IPproxies = 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)  # 暂停一秒以防止过于频繁的请求# 将数据转换为 DataFramedf = 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 Noneprint(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/,体验高效、稳定的数据采集之旅!

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com