爬虫学习笔记(一)简单基础知识与简单例子 2020.5.2

前言

今日开始学习爬虫
本节做了些简单基础知识了解
尝试了最简单的爬取

1、http请求

get请求

体现在url里
优点:比较便捷
缺点:不安全,是明文,参数长度有限制

post请求

体现在表头里
优点:比较安全,数据整体没有限制,可以上传文件

其他请求

put:不太完全
delete:删除一些信息
head:请求头

2、请求头

一些内容如下

  • accept:文本格式
  • accept-encoding:编码格式
  • connection:长连接/短连接
  • cookie:缓存,验证用
  • host:域名
  • referer:标志从哪个页面跳转过来
  • user-agent:浏览器和用户信息

3、爬虫原理

  • 找:确认抓取目标的url
  • 抓:代码发送请求获取数据
  • 析:解析获取的数据,然后回到找(自动化)
  • 固:存储和持久化数据

4、简单例子

抓取百度首页

import urllib.request
def load_data():
    url = "http://www.baidu.com/"
    #get的请求
    #http请求
    #response:http响应的对象
    response = urllib.request.urlopen(url)
    print(response)
    #读取内容 bytes类型
    data = response.read()
    print(data)
    #将文件获取的内容转换成字符串
    str_data = data.decode("utf-8")
    print(str_data)
    #将数据写入文件
    with open("baidu_test.html","w",encoding="utf-8")as f:
        f.write(str_data)
    #将字符串类型转换成bytes
    str_name = "baidu"
    bytes_name =str_name.encode("utf-8")
    print(bytes_name)
    #python爬取的类型:str bytes
    #如果爬取回来的是bytes类型:但是你写入的时候需要字符串 decode("utf-8")
    #如果爬取过来的是str类型:但你要写入的是bytes类型 encode(""utf-8")
load_data()

这个能成功如下
爬虫学习笔记(一)简单基础知识与简单例子 2020.5.2_第1张图片

抓取百度搜索页面

import urllib.request
import urllib.parse
import string
def get_method_params():
    url = "http://www.baidu.com/s?wd="
    #拼接字符串(汉字)
    #python可以接受的数据
    #https://www.baidu.com/s?wd=%E6%B1%BD%E8%BD%A6
    name = "汽车"
    final_url = url+name
    print(final_url)
    #代码发送了请求
    #UnicodeEncodeError: 'ascii' codec can't encode
    # characters in position 10-11: ordinal not in range(128)
    #python:是解释性语言;解析器只支持 ascii 0 - 127,不支持中文
    #网址里面包含了汉字,而ascii是没有汉字的,需要url转译
    #将包含汉字的网址进行转译
    encode_new_url = urllib.parse.quote(final_url,safe=string.printable)
    print(encode_new_url)
    # 使用代码发送网络请求
    response = urllib.request.urlopen(encode_new_url)
    print(response)
    #读取内容
    data = response.read().decode()
    print(data)
    #保存到本地
    with open("test.html","w",encoding="utf-8")as f:
        f.write(data)
get_method_params()

这个失败了
爬虫学习笔记(一)简单基础知识与简单例子 2020.5.2_第2张图片
因为百度搞了个防抓取的安全验证
查了查似乎有公司的爬虫绕过了这个验证
但笔者刚开始学习爬虫,主要是理解原理
这个小例子是为了理解url的使用

结语

预期5月份完成对爬虫的学习
加油

你可能感兴趣的:(crawler,python,爬虫)