从零开始的爬虫学习(一)

本文介绍了爬虫的环境搭建,一个简单的图片爬取例子,最后介绍两个常见的小错误,
AttributeError: ‘NoneType’ object has no attribute 'find
“requests.exceptions.InvalidSchema: No connection adapters were found for…”

什么是爬虫?
这是一篇解释的比较容易理解的博文。

从零学习爬虫,逃不开安装环境

完成安装环境,下一步就是安装常用的爬虫包了,这里提到主要是这两个包,request 和 BeautifulSoup (美味的汤)
这两个包是比较常见的,也比较好用。

import requests
from bs4 import BeautifulSoup

这两个包都可以在Pycharm中直接下载。

File–>Setings–>Project Interpreter
在这里插入图片描述
点击加号,搜索添加包在这里插入图片描述
这也是添加引用包的方法,当然手动添加也可以,这里就不说了。

安装环境打好后就可以开始编程了。
博主之前没有学过py,所以介绍的部分可能比较基础。
废话少说,直接上代码。

import requests
from bs4 import BeautifulSoup
import os
import lxml
import random
 
url = "https://www.baidu.com/"

r = requests.get(url)
r.raise_for_status()

bs = BeautifulSoup(r.text, 'lxml')
image = bs.find("div", {"id": "lg"}).find("img")["src"]

ir = requests.get("http:"+ image)
if ir.status_code == 200:
    open('logo.jpg', 'wb').write(ir.content)

本例实现的是从百度官网下载百度logo。
主要用到了 request.get 函数和 BeautifulSoup.find 函数
具体实现参照了这篇回答

简单总结一下我的理解,URL是一种网络寻址的路径,用来定位资源,和网站网址类似。
r = requests.get(url)
get函数的具体结构可以参照这篇博文
get函数模仿主机去点击网址的方式,给网站发送请求,并接收回应,get的返回值是网站反馈的Request对象。
r.raise_for_status()是建议反馈的Request对象是否正常的工具,具体内容可以看这篇博文

bs = BeautifulSoup(r.text, ‘lxml’)
image = bs.find(“div”, {“id”: “lg”}).find(“img”)[“src”]
这里讲BeautifulSoup实例化,因为是由get的返回值实例化的,调用find函数去返回的网页中找百度logo
如果报错
AttributeError: ‘NoneType’ object has no attribute 'find
请检查find是否能找到具体目标src。
在这里插入图片描述
可以这样理解,find先去找 div类中 id=lg 的位置,在去找其中img下的src,将src给到image。

ir = requests.get(“http:”+ image)
因为 image中存放的是 //www.baidu.com/img/bd logo1.png
我们要去访问他就需要补全网站 http://www.baidu.com/img/bd logo1.png。
ir = requests.get(“http:”+ image)
否则访问就会报错
“requests.exceptions.InvalidSchema: No connection adapters were found for…”

open(‘logo.jpg’, ‘wb’).write(ir.content)
最后打开logo.jpg存放图片。

到这基础爬取已经完成,下次将对具体的漫画网站进行爬取。

  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值