三分钟爬虫入门

想要采集数据,要明确要得到的内容是什么?是HTML源码,还是Json格式的字符串等。
抓取大多数情况属于get请求,即直接从对方服务器上获取数据。
Python中自带urllib及urllib2这两个模块,基本上能满足一般的页面抓取。
urllib 是 Python 自带的库,可以用来进行网络数据的收集和下载。
from urllib import request
url=‘https://time.geekbang.org/’
response=request.urlopen(url,timeout=1)
print(response.read().decode(‘utf-8’))
只需 4 行,就可以拿到极客时间的首页网页代码。当然,你会发现首页网页的代码只有一部分,这是因为极客时
间的大量数据都是通过 JS 请求后台加载的。
1、get 方法发送数据
此外,对于带有查询字段的url,get请求一般会将来请求的数据附在url之后,以?分割url和传输数据,多个参数用&连接。
import requests
data = {‘wd’:‘nike’, ‘ie’:‘utf-8’}
url=‘https://www.baidu.com’
response = requests.get(url=url, params=data)
如下示例:
三分钟爬虫入门
2、post 方法发送数据
默认的请求格式是 application/x-www-form-urlencoded
from urllib import request
from urllib import parse
data=bytes(parse.urlencode({‘word’:‘hello wlzcool’}),encoding=‘utf8’)
url=‘http://httpbin.org/post’
response=request.urlopen(url,data=data)
print(response.read().decode(‘utf-8’))
如下示列:
{
“args”: {},
“data”: “”,
“files”: {},
“form”: {
“word”: “hello wlzcool”
},
“headers”: {
“Accept-Encoding”: “identity”,
“Content-Length”: “18”,
“Content-Type”: “application/x-www-form-urlencoded”,
“Host”: “httpbin.org”,
“User-Agent”: “Python-urllib/3.6”,
“X-Amzn-Trace-Id”: “Root=1-5e819df5-cc1d4ab38f5b4a59c23d09e9”
},
“json”: null,
“origin”: “”,
“url”: “http://httpbin.org/post”
}
修改 User-Agent
有些网站会检查你是不是真的浏览器访问,还是机器自动访问的。这种情况,加上User-Agent,表明你是浏览器访问即可。有时还会检查是否带Referer信息还会检查你的Referer是否合法,一般再加上Referer。
User-Agent可以用亿牛云提供给的真实库,Referer的来源可以伪装成百度搜索来的。
headers = {‘User-Agent’:‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.1276.73 Safari/537.36’, ‘Referer’:‘https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=nike’}
response = requests.get(url=url, headers=headers)
如果想真正的做好一个爬虫,需要自己努力学习python爬虫知识,网络爬虫有很多限制,需要自己去实践研究,做好爬虫程序的相关优化,累计经验,才能采集到想要的数据。