解析页面肯定是写爬虫遇到的最常见的工作,但不要小看这个这个过程,有时它也会令你抓狂。这次写一下关于curl
工具的使用,主要介绍一下平时很常用的几项。
curl
是利用URL
语法在命令行方式下工作的开源文件传输工具,使用这个工具,就能在命令行发起请求,获得响应,而且其命令简单且强大,非常适合用作写爬虫时,解析页面前的模拟工作。
基础
# 发起HTTP请求,并把返回的网页内容显示在屏幕
curl "http://www.example.com"
# 发起HTTP请求,并把返回的网页内容输出到文件
curl "http://www.example.com" > test.html
# 或者用命令-o参数也可达到同样的效果
curl -o test.html "http://www.example.com"
注意:URL地址带上双引号是比较好的习惯,防止URL中带有特殊符号,导致不能解析报错情况。
伪装头信息
有时curl
直接访问页面,会得到与浏览器打开不同的结果,所以此时就要伪装头信息,来模拟浏览器的行为,这样返回的数据就跟浏览器看到的一样了。
# 使用-A参数定义User-Agent,模拟浏览器行为
curl -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36" "http://www.example.com"
# 使用-e参数定义Referer,表示从哪个页面跳过来的,解决防盗链问题
curl -e "http://www.example.com" "http://detail.example.com"
# 或者使用-H参数自定义头信息,也可定义User-Agent、Referer、Content-Type等信息
curl -H "my-header:xxxxx" "http://www.example.com"
代理访问
或者你用程序频繁访问某个网站,结果人家把你IP
封禁了,这时就可以用代理
来进行访问。
# 使用-x参数使用代理访问
curl -x "123.45.67.89:8102" "http://www.example.com"