c爬虫抓取网页数据( Python中的字典如何进行访问网络数据接口访问的相关知识)

优采云 发布时间: 2022-03-15 16:19

  c爬虫抓取网页数据(

Python中的字典如何进行访问网络数据接口访问的相关知识)

  import requests

# requests的get函数会返回一个Response对象

resp = requests.get('https://www.sohu.com/')

if resp.status_code == 200:

# 通过Response对象的text属性获取服务器返回的文本内容

print(resp.text)

  获取百度 Logo 并将其保存到名为 baidu.png 的本地文件中。首先,在百度首页,右击百度Logo,通过“复制图片地址”菜单获取图片的URL。

  import requests

resp = requests.get('https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png')

with open('baidu.png', 'wb') as file:

# 通过Response对象的content属性获取服务器返回的二进制内容

file.write(resp.content)

  注:requests库的详细使用可以参考官方文档的内容。接入网络数据接口

  *敏*感*词*很多网站都提供了开放的数据接口。在开发商业项目的时候,如果有一些我们自己解决不了的事情,我们可以使用这些开放的数据接口来处理。例如,根据用户或企业上传的信息进行实名认证或企业认证,我们可以调用第三方提供的开放接口来识别用户或企业信息的真实性;例如,要获取一个城市的天气信息,我们不能直接从气象卫星获取数据,然后自己进行计算。相应的天气信息只能通过第三方提供的数据接口获取。通常,提供具有商业价值的数据的接口,需要付费才能访问。在访问接口时,还需要提供身份标识,以便服务器判断用户是否为付费用户,并进行扣费等相关操作。当然,有些接口可以免费使用,但必须提供个人或公司信息才能访问,例如:深圳市政务数据开放平台、蜻蜓FM开放平台等。如果您找到需要的数据接口,您可以访问 网站 类型的聚合数据。

  目前我们访问的大部分网络数据接口都会返回JSON格式的数据。当我们在第 24 课中解释序列化和反序列化时,我们提到了如何将 JSON 格式的字符串转换为 Python 中的字典,并以天为单位使用数据。以行数据为例讲解网络数据接口访问的相关知识,这里不再赘述。

  开发爬虫/爬虫程序

  有时,我们需要的数据无法通过开放的数据接口获取,但在某些网页上可能有。这时候我们就需要开发一个爬虫程序,通过爬取页面来获取需要的内容。我们可以按照上面提供的方法,使用requests先获取网页的HTML代码。我们可以把整个代码看成一个长字符串,这样就可以使用正则表达式捕获组从字符串中提取出我们需要的内容。下面我们通过代码演示如何从豆瓣电影中获取前 250 部电影的名称。豆瓣电影Top250页面结构及对应代码如下图所示。

  

  import random

import re

import time

import requests

for page in range(1, 11):

resp = requests.get(

# 请求https://movie.douban.com/top250时,start参数代表了从哪一部电影开始

url=f'https://movie.douban.com/top250?start={(page - 1) * 25}',

# 如果不设置HTTP请求头中的User-Agent,豆瓣会检测出爬虫程序而阻止我们的请求

# User-Agent可以设置为浏览器的标识(可以在浏览器的开发者工具查看HTTP请求头找到)

# 由于豆瓣网允许百度爬虫获取它的数据,因此直接将我们的爬虫伪装成百度的爬虫

headers={'User-Agent': 'BaiduSpider'}

)

# 创建正则表达式对象,通过捕获组捕获span标签中的电影标题

pattern = re.compile(r'\([^&]*?)\')

# 通过正则表达式获取class属性为title且标签内容不以&符号开头的span标签

results = pattern.findall(resp.text)

# 循环变量列表中所有的电影标题

for result in results:

print(result)

# 随机休眠1-3秒,避免获取页面过于频繁

time.sleep(random.randint(1, 3))

  写爬虫程序最重要的就是让爬虫程序隐藏自己的身份,因为一般的网站对爬虫比较反感。除了修改上面代码中的User-Agent,还可以使用商业IP代理(如蘑菇代理、芝麻代理等)隐藏自己的身份,让爬取的网站无法知道真实的爬虫程序地址的IP,无法通过IP地址屏蔽爬虫程序。当然,爬虫本身也是一个灰色地带的东西。没有人说这是非法的,但也没有人说这是合法的。本着允许的精神,如果法律不禁止,我们可以根据自己工作的需要来写。爬虫程序,但是如果爬取的网站可以证明你的爬虫程序破坏了动产,

  另外,虽然通过编写正则表达式从网页中提取内容是可行的,但要编写一个能够满足需求的正则表达式并不容易,尤其是对于初学者而言。在下一课中,我们将介绍另外两种从页面中提取数据的方法。尽管它们在性能方面可能不如正则表达式,但它们降低了编码的复杂性。我相信你会喜欢的。他们的。

  简单总结

  Python 语言确实可以做很多事情。在获取网络数据方面,Python 几乎是佼佼者。大量的企业和个人会使用 Python 从网络中获取他们需要的数据。我相信这将在现在或将来发生。它也将成为您工作的一部分。

  原文来自知乎:Python-Jack

  原文链接:Learning Python from scratch - 第030课:用Python获取网络数据

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线