爬虫学习记录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫学习记录相关的知识,希望对你有一定的参考价值。
0.基础知识
- 网络爬虫
- 爬虫,即网络爬虫,可以简单的理解为,行走在互联网这张网上的爬虫, 你可以通过爬虫来抓取你在这张网上你想要的资源
- 浏览网页的过程
- 我们平时浏览网页就是在浏览器输入网址,然后网页就显示了出来,其实这些页面的实质 是由html代码构成的,而我们浏览的过程就是,输入网址,然后经过DNS服务器,找到服务器 主机,向服务器发出一个请求,服务器经过解析之后,就会给我们的浏览器发送HTML等等文件, 然后再经过浏览器的解析,就是我们所看到的的了
- 而我们爬虫爬取的也正是这些文件,我们通过分析和过滤这些HTML代码,实现对所需要资源
的获取
- URL的含义
- URL(统一资源定位符),也就是我们平时说的网址,是互联网上标准资源的地址。互联网上 每个文件都对应着唯一的URL
1.初次尝试
了解玩一些基本的知识后,我先用下面的代码爬写网页试试
#python3版本
from urllib.request import urlopen
url = "http://www.baidu.com"
reponse = urlopen(url)
print(reponse.read())
运行了以后,简直坑,一大段天书,不过没事,这才是开始,我慢慢学。
2.了解代码
from urllib.request import urlopen
首先这里是导入库,因为我们要调用urllib.requestl里的urlopen方法,urlopen这个方法,这个方法顾名思义url和open,所以他就是拿来open url的。
urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
目前只知道的是一定要传入url这个参数
3.改进代码
构造Request,这段代码运行结果和第一段代码是完全一致的
from urllib.request import urlopen
from urllib.request import Request
url = "http://www.baidu.com"
#推荐这么写,因为构建请求的时候还需要加入好多内容
request = Request(url)
reponse = urlopen(request)
print(str(reponse.read(),utf-8)) #输出的字符串编码有点问题,所以转换了编码
4.POST和GET数据传送
通过上面两段代码可以爬取已经可以爬取好一些网站了(虽然还没有实质作用),但是如果遇到像比如说要登录的才能爬取的网页呢。所以在访问时,我们需要传递一些数据给它,也就是上面说的构建请求了,数据传递的方式分为POST和GET两种
+ POST方式:
#coding:utf-8
from urllib.request import Request
from urllib.request import urlopen
from urllib.parse import urlencode
url = "http://www.example.com"
values =
"username" : "richie",
"password" : "123456"
data = urlencode(values)
data = data.encode(utf-8)
# post 方法
request = Request(url,data)
response = urlopen(request)
print(str(response.read(),utf-8))
- GET方式:
#coding:utf-8
from urllib.request import Request
from urllib.request import urlopen
from urllib.parse import urlencode
url = "http://www.example.com"
values =
"username" : "richie",
"password" : "123456"
data = urlencode(values)
# GET方法
get_url = url + "?" + data # http://www.example.com?username=richie&password=123456
request = Request(get_url)
response = urlopen(request)
print(str(response.read(),utf-8))
通过这两段代码可以看出他们之间明显的区别:
GET方法是直接把参数写到网址上面,直接构建一个带参数的URL出来,而post方法就不是
参考于:静觅 » Python爬虫入门
以上是关于爬虫学习记录的主要内容,如果未能解决你的问题,请参考以下文章