全网最通俗之一的讲解爬虫基本与核心知识整理汇总干货!(新手上路)

爬虫学习

使用说明:本文借鉴了几本参考书写的。主要是按照自己的思路整理,我是一名刚学习爬虫的,所以有时候看文章和书籍感觉不是自己想要的,所以写了这篇文章。本文的代码都是可以运行的,而且还增加了实际的案例,比如解析的时候,给了html文本,感兴趣的可以自己琢磨学习。我就是这样学习的。另外,本文有很多自己的备注,可能语言不太流畅。一些代码只要去掉#就可以运行,我是一个个尝试,所以都写上了。如果你对某一个代码有疑问,可以留言,我看到了就会回复。
在这里插入图片描述
本文一共分为四个部分,是我对爬虫的初步理解,先抓到页面,然后读取页面文本(本文主要讨论文本),然后就是复杂的读取(比如翻页、页中页等),最后就是保存。

本文适合尽量写的通俗,文章主要是给初学者看的。

本文主要针对一些静态页面,不涉及post,如果是爬爬链家网等房地产网站、豆瓣网、美团网等等,都是可以的,但是如果是微博、APP、公众号可能不太好用。但是搞清楚这些基本的原理和方法,是必须会的。不然遇到复杂的网站,连分析都不会了。

第一部分:先爬(就是抓上你想要的页面)

四大核心:抓文本、响应头、捕捉异常、IP代理

为什么说是四大核心,就是我在爬的时候,抓文本是必须要的,响应头是必须要的,其他两个不是很复杂,但是遇到封IP的,你得上代理。当然捕捉异常最后还是带上,不然碰到不是200的状态码,程序无法告知你啊。本文的案例里面不涉及后面2个,但是如果做大项目的话,还是得写上。
抓页面,主要是2大方法,urllib库和requests库,两个都可以,但是一般用requests库方便。你看看urllib库的代码就知道了。所以,如果着急爬的同学,直接学习requests库吧。

urllib库

#python系统自带的urllib库,上手抓文本
import urllib.request
re = urllib.request.urlopen("http://www.baidu.com")
print(re.read().decode("utf-8"))
#捕捉异常,有备无患
from urllib import request, error
try:
    response = request.urlopen('http://cuiqingcai.com/index.htm')
except error.URLError as e:
    print(e.reason)
#代理
import urllib.request
proxy_handler = urllib.request.ProxyHandler({
   
    'http': 'http://14.198.177.46',
    'https': 'https://14.198.177.46'
})#https://www.kuaidaili.com/free/intr/这个网站有免费的IP代理
opener = urllib.request.build_opener(proxy_handler)
response = opener.open('http://www.baidu.com')
print(response.status)
#响应头带上,用add_header
from urllib import request, parse
url = 'http://www.baidu.com'
req = urllib.request.Request(url=url)
req.add_header('User-Agent', 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)')
req.add_header('Host','www.baidu.com')
req.add_header('Referer','https://www.baidu.com/index.php?tn=98012088_5_dg&ch=5')
response = urllib.request.urlopen(req)
print(response.read().decode('utf-8'))

requests库

#请求头,爬文本
import requests
url = 'https://www.jingdianlaoge.com'
headers = {
   'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'}
res = requests.get(url=url, headers=headers)
#print(res.text)
res.encoding='utf-8'
print(res.text)
#捕捉异常
import requests
url = 'http://www.baidu.com'
headers = {
   'User-Agent'
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值