前段时间在票圈看见有大佬爬了学校公众号的树洞,躺尸多年的咸鱼突然想玩玩爬虫。
在这里开一个小白学习历程主要也算是云存储一份学习笔记。
顺道粘一下廖雪峰老师的Python教程:
www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
光看教程很枯燥也很难记,这时知行合一就显得十分重要了。
第一篇废话太多了233333。下面开始第一次爬虫:非常简单的抓取一个网页。
```
import urllib.request
url='http://www.baidu.com'
page_info=urllib.request.urlopen(url).read()
page_info=page_info.decode('utf-8')
print(page_info)
```
首先引入urllib.request 库,具体功能稍后再说。
url——统一资源定位符,是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
基本URL包含模式(或称协议)、服务器名称(或IP地址)、路径和文件名,具体的标准语法和内容可查询《计算机网络》。在这里可以就简单理解为网址,然后我们把要爬取的网址赋给这个url。
urllib.request.urlopen()方法实现了打开url,并返回一个 http.client.HTTPResponse对象(emmmm这个对象具体是啥意思我也不是很明白反正先这么用),通过http.client.HTTPResponse的read()方法,获得response body,转码最后通过print()打印出来。
decode('utf-8')用来将页面转换成utf-8的编码格式,否则会出现乱码。
以上代码在IDLE交互式环境运行后得到
```
from urllib import request
if __name__=="__main__":
url='http://www.baidu.com'
response=request.urlopen(url)
page_info=response.read()
page_info=page_info.decode('utf-8')
print(page_info)
```
这时另一种写法啦。
首先一开始直接从urllib库引入函数request。
在代码一开始有一段“ if __name__=="__main__": ”,这句话的作用是:
“Make a script both importable and executable”
让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行。
接下来相同的赋值url,并直接调用request函数打开url,之后的都是一样的啦。
还有值得注意的一点是,我们可以利用urlopen()方法可以实现最基本请求的发起,但这几个简单的参数并不足以构建一个完整的请求,如果请求中需要加入headers(请求头)等信息,我们就可以利用更强大的Request类来构建一个请求。
```
req = urllib.request.Request(url)
response = urllib.request.urlopen(req)
#用Request类构建了一个完整的请求,增加了headers等一些信息
```
好了到这里,一个巨简单的爬虫就基本OK了。
许多涉及到的概念我还只是初步的了解,更多的在之后再边用边学吧。