(对学习过程中的一些资料进行整理归类和分析)
学习爬虫主要分3大部分:抓取,分析,存储。主要模型基础可以参考HTTP提要中的说明。
- 抓取
抓取数据是爬虫的关键,你要明确要得到的内容是什么?是HTML源码,还是Json格式的字符串等。特别对于一些具有“防御性”的情况,比如说网站需要登陆、挂代理访问、限制访问频率或者输入验证码的情况,都需要考虑到。(来源)
Python有自带的urllib库(参考1,参考2)可以实现抓取功能(Python3.x已经将urllib和urllib2两个库整合成了urllib一个库);还可以安装requests(参考)包实现类似功能。
1.最基础的情况
抓取网页最基本信息,如下面代码所示。
Python3 代码:
import urllib.request as reqt
# 链接
url = "http://www.baidu.com"
# 请求
request = reqt.Request(url)
# 响应
response = reqt.urlopen(request)
data = response.read()
# 解码
data = data.decode('utf-8')
#### 显示信息 ####
print(data)
print(type(response))
print(response.geturl())
print(response.info())
print(response.getcode())
宁哥的小站:网易新闻排行榜抓取
url的构成参考: HTTP提要 。
2.伪装浏览器
对于一些需要登录的网站,如果不是从浏览器发出的请求,则得不到响应。所以,我们需要将爬虫程序发出的请求伪装成浏览器。(实例参考 来源:伪装浏览器)
其中的报头中的userAgent部分:
可以通过例子中的方法得到,也可以使用下面简单的方法得到(我自己用的是下面的第一种方法):
image.png
也可以通过导入python中专门的模块得到,或者自己从网上搜常用的userAgent,构建一个userAgent资源池,然后随机从中抽取也行。
其他反爬虫情况的处理(Python网络爬虫入门之精华版-3.对于反爬虫机制的处理):
3.登陆情况的处理
抓取大多数情况属于get请求,即直接从对方服务器上获取数据。对于登陆情况,则有些不同,需要做相应的处理。
image.png宁哥的小站:网络爬虫-验证码登陆
4.爬取图片
实现了简单网页的抓取以及浏览器的伪装,接着,可以实现对豆瓣首页所有图片进行爬取,把图片保存到本地一个路径下。(参考1:爬取豆瓣首页图片,参考2:爬取你想要的图片 )对于第二个参考2,可以在文件操作的部分参照参考1做点修改:
这里如果没有事先新建文件夹,会出现错误。如果参照参考1:
image.png
导入os模块,对当前路径有效性进行检测,如果没有就创建一个目标路径,可以避免前面所说的情况。修改为:
image.png
image.png
网友评论