爬虫初学习

这篇博客介绍了爬虫的基本概念和学习路径,包括Python的urllib库。通过理解爬虫的工作流程,学习了如何使用urlopen进行网页请求,并讨论了处理编码问题和HTTP请求的相关参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

认识爬虫

以下的学习都基于一个博主的练习,我就跟着他一起学习练习,这篇博客只是依然记录一下自己的学习历程(😀)加油💪
这是这位博主的原博客,可以学习看看
这是另外一位博主,更入门更详细一些
首先先认识爬虫这个概念,首先学会基本的Python语法知识、学习Python爬虫常用到的几个重要内置库urllib, http等,用于下载网页、学习正则表达式re、BeautifulSoup(bs4)、Xpath(lxml)等网页解析工具、开始一些简单的网站爬取,了解爬取数据过程、了解爬虫的一些反爬机制,header,robot,时间间隔,代理ip,隐含字段等、学习一些特殊网站的爬取,解决登录、Cookie、动态网页等问题、了解爬虫与数据库的结合,如何将爬取数据进行储存、学习应用Python的多线程、多进程进行爬取,提高爬虫效率、学习爬虫的框架,Scrapy、PySpider等、学习分布式爬虫(数据量庞大的需求)

爬虫的过程

在键盘上输入网址点击搜索之后,通过网络经过DNS服务器分析域名,找到真正的服务器。然后通过HTTP协议对服务器发出GET或POST请求,若请求成功就得到了网页,一般都是用HTML, CSS, JS等前端技术来构建的,若请求不成功,服务器返回请求失败的状态码,常见到的503,403等。爬虫通过对服务器发出请求得到HTML网页,然后对下载的网页进行解析,得到我们想要的内容。

urllib

这个库是python内置的,在Python的urllib库中doc开头是这样简短描述的:

  • Error:“Exception classesraised by urllib.”----就是由urllib举出的exception类
  • Parse:“Parse (absolute andrelative) URLs.”----解析绝对和相对的URLs
  • Request:“An extensiblelibrary for opening URLs using a variety of protocols”用各种协议打开URLs的一个扩展库
  • Response:“Response classesused by urllib.”----被urllib使用的response类

刚开始先试试request的使用,request请求最简单的操作是用urlopen方法,代码如下:

import urllib.request
response = urllib.request.urlopen('http://python.org/')
result = response.read()
print(result)

运行结果编码出现问题:
在这里插入图片描述
一般这种情况把编码改成常见的UTF-8就可以了。

import urllib.request
response = urllib.request.urlopen('http://python.org/')
result = response.read().decode('utf-8')
print(result) 

结果很长:
在这里插入图片描述
现在来学一下urlopen,urlopen是request的其中一个方法,功能是打开一个网址,URL参数可以是一串字符串(如上例子中一样),也可以是Request对象。

  • url:即输入的url网址,(如:http://www.xxxx.com/);
  • data:发给服务器请求的额外信息(比如登录网页需要主动填写的用户信息)。如果需要添加data参数,那么是POST请求,默认无data参数时,就是GET请求;一般来讲,data参数只有在http协议下请求才有意义data参数被规定为byte object,也就是字节对象。data参数应该使用标准的结构,这个需要使用urllib.parse.urlencode()将data进行转换,一般把data设置成字典格式再进行转换即可
  • timeout:是选填的内容,定义超时时间,单位是秒,防止请求时间过长,不填就是默认的时间;
  • cafile:是指向单独文件的,包含了一系列的CA认证 (很少使用,默认即可);
  • capath:是指向文档目标,也是用于CA认证(很少使用,默认即可);
  • cafile:可以忽略
  • context:设置SSL加密传输(很少使用,默认即可)
  • geturl(): 返回URL,用于看是否有重定向。
  • info():返回元信息,例如HTTP的headers。
  • getcode():返回回复的HTTP状态码,成功是200,失败可能是503等,可以用来检查代理IP的可使用性。
def urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TI
            MEOUT,*, cafile=None, capath=None, 
            cadefault=False, context=None):
  • url,data和上面urlopen中的提到的一样。
  • headers是HTTP请求的报文信息,如User_Agent参数等,它可以让爬虫伪装成浏览器而不被服务器发现你正在使用爬虫。
  • origin_reg_host, unverifiable, method等不太常用。origin_reg_host指的是原产地注册主机。

2021/6/28


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值