文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python网络爬虫之如何获取网络数据

2023-07-06 10:40

关注

本篇内容介绍了“Python网络爬虫之如何获取网络数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

使用 Python 获取网络数据

使用 Python 语言从互联网上获取数据是一项非常常见的任务。Python 有一个名为 requests 的库,它是一个 Python 的 HTTP 客户端库,用于向 Web 服务器发起 HTTP 请求。

我们可以通过以下代码使用 requests 库向指定的 URL 发起 HTTP 请求:

import requestsresponse = requests.get('<http://www.example.com>')

其中,response 对象将包含服务器返回的响应。使用 response.text 可以获取响应的文本内容。

此外,我们还可以使用以下代码获取二进制资源:

import requestsresponse = requests.get('<http://www.example.com/image.png>')with open('image.png', 'wb') as f:    f.write(response.content)

使用 response.content 可以获取服务器返回的二进制数据。

编写爬虫代码

爬虫是一种自动化程序,可以通过网络爬取网页数据,并将其存储在数据库或文件中。爬虫在数据采集、信息监控、内容分析等领域有着广泛的应用。Python 语言是爬虫编写的常用语言,因为它具有简单易学、代码量少、库丰富等优点。

我们以“豆瓣电影”为例,介绍如何使用 Python 编写爬虫代码。首先,我们使用 requests 库获取网页的 HTML 代码,然后将整个代码看成一个长字符串,使用正则表达式的捕获组从字符串提取需要的内容。

豆瓣电影 Top250 页面的地址是 https://movie.douban.com/top250?start=0,其中 start 参数表示从第几个电影开始获取。每页共展示了 25 部电影,如果要获取 Top250 数据,我们共需要访问 10 个页面,对应的地址是 https://movie.douban.com/top250?start=xxx,这里的 xxx 如果为 0 就是第一页,如果 xxx 的值是 100,那么我们可以访问到第五页。

我们以获取电影的标题和评分为例,代码如下所示:

import reimport requestsimport timeimport randomfor page in range(1, 11):    resp = requests.get(        url=f'<https://movie.douban.com/top250?start=>{(page - 1) * 25}',        headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'}    )    # 通过正则表达式获取class属性为title且标签体不以&开头的span标签并用捕获组提取标签内容    pattern1 = re.compile(r'<span class="title">([^&]*?)</span>')    titles = pattern1.findall(resp.text)    # 通过正则表达式获取class属性为rating_num的span标签并用捕获组提取标签内容    pattern2 = re.compile(r'<span class="rating_num".*?>(.*?)</span>')    ranks = pattern2.findall(resp.text)    # 使用zip压缩两个列表,循环遍历所有的电影标题和评分    for title, rank in zip(titles, ranks):        print(title, rank)    # 随机休眠1-5秒,避免爬取页面过于频繁    time.sleep(random.random() * 4 + 1)

在上述代码中,我们通过正则表达式获取标签体为标题和评分的 span 标签,并用捕获组提取标签内容。使用 zip 压缩两个列表,循环遍历所有电影标题和评分。

使用 IP 代理

许多网站对爬虫程序比较反感,因为爬虫程序会耗费掉它们很多的网络带宽,并制造很多无效的流量。为了隐匿身份,通常需要使用 IP 代理来访问网站。商业 IP 代理(如蘑菇代理、芝麻代理、快代理等)是一个好的选择,使用商业 IP 代理可以让被爬取的网站无法获取爬虫程序来源的真实 IP 地址,从而无法简单的通过 IP 地址对爬虫程序进行封禁。

以蘑菇代理为例,我们可以在该网站注册一个账号,然后购买相应的套餐来获得商业 IP 代理。蘑菇代理提供了两种接入代理的方式,分别是 API 私密代理和 HTTP 隧道代理,前者是通过请求蘑菇代理的 API 接口获取代理服务器地址,后者是直接使用统一的代理服务器 IP 和端口。

使用 IP 代理的代码如下所示:

import requestsproxies = {    'http': '<http://username:password@ip>:port',    'https': '<https://username:password@ip>:port'}response = requests.get('<http://www.example.com>', proxies=proxies)

其中,usernamepassword 分别是蘑菇代理账号的用户名和密码,ipport 分别是代理服务器的 IP 地址和端口号。注意,不同的代理提供商的接入方式可能不同,需要根据实际情况进行相应的修改。

“Python网络爬虫之如何获取网络数据”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯