Python爬虫(初识篇)

本文介绍了网络爬虫的基本概念,Python在爬虫中的应用,包括爬虫原理(如浏览器请求与服务器响应)、遵循robots.txt协议的重要性,以及User-Agent在模拟浏览器和避免被识别为爬虫中的关键作用。最后通过实例展示了如何使用requests库进行基本爬虫操作。
摘要由CSDN通过智能技术生成

1.爬虫介绍

网络爬虫,又称为网页蜘蛛,网络机器人,是由代码编写,按照一定的规则,自动抓取互联网信息的程序或者脚本。Python由于简单易用的特性,深受程序员的喜爱,特别适合用于爬虫。在Python语言中,三行代码就可以写一个简单的爬虫程序,这是其他编程语言无法企及的。

2.爬虫原理

(1)浏览器发送请求给服务器,请求方式主要分为GET,POST两种类型。

(2)服务器接收到浏览器发送的请求后,根据请求内容做出相应处理,然后把消息回复给浏览器。

(3)浏览器收到服务器的响应信息后,会对信息进行相应处理,然后展示给用户。

我们编写爬虫程序,就是模拟浏览器,给服务器发送请求,然后获取服务器响应的数据,并对数据进行分析与处理。
 

3.爬虫协议

网站出于安全和隐私考虑,可以建立一个robots.txt文件,来告诉搜索引擎哪些页面可以爬取,哪些页面不能爬取,而搜索引擎则通过读取robots.txt文件来识别这个页面是否允许被爬取。这是个约定俗成的“君子协议”,我们在爬取网站数据时一定要遵守。比如:我们可以通过输入网址 https://www.baidu.com/robots.txt 来查看百度的robots协议。

4.小试牛刀

光说不练假把式,看了这么多,我们先写个最简单的爬虫程序试一下吧。Python爬虫离不开requests包,这个库是第三方的,如果没有的话,可以在cmd命令行执行语句:pip install requests

然后输入以下代码:

import requests

url = 'https://www.baidu.com'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.62'
}
resp = requests.get(url, headers=headers)
print(resp.text)

响应内容如下,这就说明我们爬取成功了

接下来,我想把服务器响应的内容保存到本地,涉及到文件操作,写入的编码形式改为UTF-8

import requests

url = 'https://www.baidu.com'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.62'
}
resp = requests.get(url, headers=headers)
html = resp.text
print(html)
with open('baidu.html', 'w', encoding='utf-8') as f:
    f.write(html)
    f.flush()
    f.close()
print('保存完毕')

 如果把前面的头文件去掉,再请求会怎样?

import requests

url = 'https://www.baidu.com'
resp = requests.get(url)
print(resp.text)

我们发现响应的内容有问题,说明这次爬取,让服务器觉察到我们了。

服务器为什么能觉察到我们呢?当然是缺少请求头文件了

5.User-Agent

请求头里最重要的元素就是User-Agent(用户代理)。网站服务器通过识别 UA来确定用户所使用的操作系统版本、CPU 类型、浏览器版本等信息,进而给不同的用户回复相应的页面。因此,服务器可通过识别请求头中 User-Agent 信息来判断本次请求是否是爬虫行为。如果是,服务器就会回复不相干的信息,甚至限制其IP访问。所以我们在爬取的时候尽量加上头文件headers,并在headers字典中加入User-Agent,这样才能让我们的程序模拟浏览器访问网站。

常见的浏览器请求头如下

系统浏览器User-Agent字符串
MacChrome Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36
MacFirefox Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:65.0) Gecko/20100101 Firefox/65.0
MacSafariMozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15
Windows Edge Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763
Windows IEMozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Windows Chrome Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36
iOSChrome Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) CriOS/31.0.1650.18 Mobile/11B554a Safari/8536.25
iOSSafariMozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12F70 Safari/600.1.4
AndroidChromeMozilla/5.0 (Linux; Android 4.2.1; M040 Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36
AndroidWebkitMozilla/5.0 (Linux; U; Android 4.4.4; zh-cn; M351 Build/KTU84P) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值