今日开始学习爬虫
本节做了些简单基础知识了解
尝试了最简单的爬取
体现在url里
优点:比较便捷
缺点:不安全,是明文,参数长度有限制
体现在表头里
优点:比较安全,数据整体没有限制,可以上传文件
put:不太完全
delete:删除一些信息
head:请求头
一些内容如下
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()
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()
这个失败了
因为百度搞了个防抓取的安全验证
查了查似乎有公司的爬虫绕过了这个验证
但笔者刚开始学习爬虫,主要是理解原理
这个小例子是为了理解url的使用
预期5月份完成对爬虫的学习
加油