一、什么是爬虫
爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息。
如果我们把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点,而爬虫就是一只小蜘蛛,
沿着网络抓取自己的猎物(数据)爬虫指的是:向网站发起请求,获取资源后分析并提取有用数据的程序;
从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON数据/二进制数据(图片、视频) 爬到本地,进而提取自己需要的数据,存放起来使用;
二、爬虫基本流程
发送请求—获取响应内容—解析数据—保存数据
【互联网加载一个页面:
首先在地址栏输入url地址(http://www.baidu.com),然后一个请求携带信息传送到url地址所在服务器,服务器根据信息作出反应,返回响应数据,响应数据返回浏览器进行渲染、就是css加载和js加载。
】
三、爬虫范例
范例1.返回一个HTML页面数据(一般是残缺的,缺少渲染)
import urllib.request
#导入一个爬虫需要的包
def main():
response = urllib.request.urlopen(url='https://www.taobao.com/')
#返回的是一个响应对象
response = response.read()
#获取HTML内容,read可以获取文件所有的内容
print(response)
if __name__ == '__main__':
'''简单返回一个HTML页面数据'''
main()
范例2.爬虫伪装请求头(伪装从浏览器发送的,防止被校验出是爬虫)
import urllib.request as urllib2
def main():
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
'Connection': 'keep - alive',
}
# 构造REQUEST请求,增加headers,伪装成浏览器请求
request_obj = urllib2.Request(url='http://www.taobao.com/', headers=headers)
# 获取请求头的User-agent观察下
user_agent = request_obj.get_header('User-agent')
print(user_agent)
# 获取请求头的connect观察下
conect = request_obj.get_header('Connection')
print(conect)
response = urllib2.urlopen(request_obj)
# 返回的是一个响应对象
response = response.read()
# 获取html的内容,read可以获取文件所有的内容
return response
if __name__ == '__main__':
a=main()
print(a)
#现在获取的响应a是bytes类型
上面这个范例的headers我只写了两个,最好是把headers写完整。
headers查看方法:网页上鼠标点击右键,进入审查元素或者检查,里面的network里,此时刷新网页,一般出现的文件点击第一个,右边headers里的request headers。