如何写一个爬虫 - 第四篇

这可能是一篇教你如何写爬虫的博客。

第三篇我们介绍了 HTTP 的请求方式,这篇我们讲一下如何查询或提交数据到服务器。

URL 查询参数

在 HTTP 中,可以在 URL 部分后添加查询字符串来提交查询参数。

1
2
3
4
5
6
$ curl 'http://localhost/4/get.php?key1=value1&key2=value2' -X GET
Array
(
[key1] => value1
[key2] => value2
)

注意:查询字符串与 POST application/x-www-form-urlencoded 使用百分号编码

附带在 URL 部分的查询字符串并没有规定长度,理论上可以无限长。但根据浏览器或服务器的实现,这个值是有上限的。一般认为,不应该在 URL 中附带过长的参数。如果要传输大量的数据,应该选择 data 域数据。

data 域数据

根据 HTTP 协议的定义,可以将数据置于 HTTP 数据包的 data 域。

1
2
3
4
5
6
$ curl 'http://localhost/4/post.php' -X POST -d 'key1=value1&key2=value2'
Array
(
[key1] => value1
[key2] => value2
)

这种方法与使用哪种请求并没有关系,GET 请求也可以这样使用。

1
2
3
4
5
6
$ curl 'http://localhost/4/post.php' -X GET -d 'key1=value1&key2=value2'
Array
(
[key1] => value1
[key2] => value2
)

这里演示的是 Content-Typeapplication/x-www-form-urlencoded 的情况,Content-Type 的所有选项可以看我上一篇博客

data 域的数据理论上可以无限多。