Python网络爬虫(一)---urllib

本文介绍了网络爬虫的基本概念,并探讨了Python中urllib库在爬虫开发中的应用。通过urllib,我们可以模拟浏览器发送请求,处理URL,并进行数据编码。文章详细讲解了urllib.request和urllib.parse模块,包括如何创建请求对象,设置headers,以及URL编码等关键操作。
摘要由CSDN通过智能技术生成

什么是网络爬虫

网络爬虫英文可以叫crawler,也可以叫spider,简而言之就是利用计算机从网上抓取你所感兴趣的文件、图片、视频等。其实在大多数情况下,没有什么网络爬虫,我们也可以根据自己所需要的,通过浏览器从网上下载东西,(而网络爬虫的实质也是在模仿浏览器进行一系列的操作)但是如果我们所要的东西特别多时,例如要下载10000张图片,一个个用手去点岂不太麻烦了,所以我们需要利用到计算机来帮助我们爬取。

爬虫中用到的常用工具

用计算机进行数据的抓取的能动性肯定不如手动,但我们将抓取的逻辑、规律告诉计算机,那他的动作将变得很快,编写爬虫程序的过程也就是寻找规律的过程。
我们都知道网络上的资源都有属于自己的URL,我们所要做的就是一步步的寻找所要资源的URL,并把寻找URL的规律告诉计算机,通过URL来下载资源。
对于前期的探索工作,我们就需要借助一些工具,通过这些工具来了解对一个URL进行访问的时候到底发生了什么,最常见的就是浏览器自带的“开发者工具”,一般在浏览器的右上角可以找到,把他打开,点开web控制台中的网络一栏,当我们进行网页的打开、链接的点击时,控制台中就会显现出受到的数据包,从这些数据包中就可以看到请求的url,请求方式,请求头,响应头,响应内容等。
在这里插入图片描述
还有一个比较常用的工具叫Fiddler,是一个专业的抓包软件,他的作用就相当于一个中间人,站在通信的两个人中间,信息的流通都会经过他,这样来往了什么内容他都能获取。
在这里插入图片描述
在写爬虫程序的时候能灵活的运用这些工具会带来很大的便利。

用Python写爬虫

编程语言只是达到目的的工具,不是目的本身,用其他语言也可以用来写爬虫,比如JAVA,但相比Python,从一个“Helloworld”就可以看出JAVA的代码量较大,对于一个小的爬虫来说,有点冗余,并且由于Python有着庞大的第三方库的支持,近年来还在不断成长,咱不能说Python比JAVA好,但就爬虫来说,用Python较为适合。

urllib库

urllib是python中用于模拟浏览器发送请求的库,是python自带的,不需要另外下载的。在urllib中包含四个模块:
1.request:是用于模拟浏览器发送请求的核心模块。
2.parse:是一个对URL进行处理的模块,进行URL编码解码。
3.error:处理在爬取过程中发生异常的模块,例如没网,连接失败等。
4.robotparser:用于解析robot.txt文件的模块,robots.txt是用来告诉搜索引擎网站上哪些内容可以被访问、哪些不能被访问。当搜索引擎访问一个网站的时候,它首先会检查网站是否存在robots.txt,如果有则会根据文件命令访问有权限的文件。

在这四个模块当中较为常用是前两个,如果想把程序写的漂亮,第三个也会用到,接下来主要就request,parse做一些介绍。

urllib.request
urllib.request当中最常用的方法是urlopen(url),即向指定的url发送请求,他会返回一个对象,对象包含着返回回来的各种信息,实例如下:


                
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Python爬虫中,可以通过伪装User-Agent来隐藏爬虫的真实身份,避免被网站封禁。User-Agent是HTTP请求头的一部分,用于描述客户端的类型、操作系统、浏览器等信息。一些网站会根据User-Agent来识别客户端的真实身份,所以我们可以通过修改User-Agent来达到伪装的目的。 在Python中,可以使用第三方库如Requests、urllib等来发送HTTP请求,并通过设置headers参数来伪装User-Agent。具体来说,我们可以在headers中设置User-Agent字段,例如: ``` import requests url = 'http://example.com' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36' } response = requests.get(url, headers=headers) ``` 在上述代码中,我们设置了User-Agent为Chrome浏览器的信息,这样就可以伪装成浏览器发送HTTP请求,而不是Python爬虫发送的请求。当然,为了避免被网站封禁,我们需要经常更新User-Agent,同时也要注意不要过于频繁地发送请求,以免被识别为爬虫。 ### 回答2: Python爬虫伪装User-Agent指的是开发者在编写Python代码的过程中,将User-Agent设置为浏览器端的User-Agent,从而避免服务器端针对爬虫进行封禁或者限制访问。 User-Agent是HTTP请求的头部信息之一,用于告知服务器客户端正在使用的浏览器和操作系统的情况。由于爬虫使用的请求头往往与常规浏览器的请求头不同,因此服务器可能会对其进行限制、封禁甚至是先后回应。 为了避免这种情况,我们可以在代码中设置一个随机的User-Agent。Python中有许多第三方库提供了User-Agent,比如fake_useragent、user_agents等。这些库可以生成一个随机的User-Agent,让服务器无法将其与爬虫识别出来。 另外,我们也可以手动编写每个请求的User-Agent,使其更加随机和多变。在编写代码时,我们可以将User-Agent列表存储到文件中,然后在每次请求时随机选择一个User-Agent,使得每个请求使用的User-Agent都不相同。 需要注意的是,虽然伪装User-Agent可以一定程度上避免被服务器封禁,但过于频繁的访问依然可能被服务器识别为爬虫行为。因此,建议在爬虫程序中加入适当的延时和限制访问次数的机制,以避免被反爬虫机制限制。 ### 回答3: 为了更好地伪装自己的爬虫程序,我们需要理解什么是 User-Agent。User-Agent 是一种 HTTP 请求头部信息,用于描述用户代理的一些信息,包括操作系统、浏览器类型、版本等等。在爬虫请求时,服务器通过 User-Agent 来判断请求是否来自浏览器。因此,如果我们的爬虫请求头中不带 User-Agent 或者 User-Agent 显然是一个机器人,那爬虫很可能会被服务器封禁。 通过 Python 爬虫伪装 User-Agent 的方法有很多种,以下是一些常用的方法: - 使用 fake-useragent:fake-useragent 是一个第三方库,可以自动生成随机 User-Agent,使用方法非常简单。 - 使用 requests 库自定义 headers:这种方法的灵活度比较高,可以自定义 User-Agent,还可以添加其他自定义信息。 - 使用 random.choice() 函数随机选择 User-Agents:可以通过准备好多个 User-Agent 列表,然后随机选择一个 User-Agent。 参考下面代码: ``` import requests import random # 使用fake_useragent库来设置User-Agent from fake_useragent import UserAgent # 使用random.choice随机选择User-Agent UserAgents = [ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36", ] # 设置随机User-Agent headers = { 'User-Agent': random.choice(UserAgents) } # 或使用fake-useragent库来生成User-Agent headers = { 'User-Agent': UserAgent().random } # 执行请求 response = requests.get(url, headers=headers) ``` 总之,为了避免被服务器封禁,我们需要用一些方法伪装自己的 User-Agent,使其看起来更像是来自浏览器的请求。当然,我们也需要注意不要伪装得过于真实,否则过多的请求可能会对目标网站造成负面影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值