首页 > 其他 > 详细

初识爬虫

时间:2019-03-18 22:32:32      阅读:183      评论:0      收藏:0      [点我收藏+]

1.http:(1)当?用户在地址输?入了了?网址 发送?网络请求的过程是什什么

(2)http的请求?方式

get请求

(1)?比较便便捷

缺点:不不安全:明?文

参数的?长度有限制

post请求

(1)?比较安全

(2)数据整体没有限制

(3)上传?文件

put(不不完全的)

delete(删除?一些信息)

head(请求头)

发送?网络请求(需要带?一定的数据给服务器?不不带数据也可以)

请求头?里里?面requestheader

返回数据:response

(1)Accept:?文本的格式

(2)Accept-Encoding:编码格式

(3)Connection:?长链接 短链接

(4)Cookie:验证?用的

(5)Host:域名

(6)Referer:标志从哪个?页?面跳转过来的

(7)User-Agent:浏览器?和?用户的信息

2.爬?虫?入?门:使?用代码模拟?用户 批量量的发送?网络请求 批量量的获取数据

(1)爬?虫的价值:

1.买卖数据(?高端的领域价格特别贵)

2.数据分析:出分析报告

3.流量量

4.指数阿?里里指数,百度指数

(3)合法性:灰?色产业

政府没有法律律规定爬?虫是违法的,也没有法律律规定爬?虫是合法的

公司概念:公司让你爬数据库(窃取商业机密)责任在公司

(4)爬?虫可以爬取所有东?西?(不不是)爬?虫只能爬取?用户能访问到的数据

爱奇艺的视频(vip?非vip)

1.普通?用户 只能看?非vip 爬取?非vip的的视频

2.vip 爬取vip的视频

3.普通?用户想要爬取vip视频(?黑客)

爬?虫的分类:(1)通?用爬?虫

1.使?用搜索引擎:百度 ?谷歌 360 雅?虎 搜狗

优势:开放性 速度快

劣势:?目标不不明确

返回内容:基本上%90是?用户不不需要的

不不清楚?用户的需求在哪?里里

(2)聚焦爬?虫(学习)

1.?目标明确

2.对?用户的需求?非常精准

3.返回的内容很固定

增量量式:翻?页:从第?一?页请求到最后?一?页

Deep 深度爬?虫:静态数据:html css

动态数据:js代码,加密的js

robots:是否允许其他爬?虫(通?用爬?虫)爬取某些内容

聚焦爬?虫不不遵守robots

爬?虫和反扒做?斗争:资源对等 胜利利的永远是爬?虫

爬?虫的?工作原理理:

1.缺?人你抓取?目标的url是哪?一个(找)

2.使?用python代码发送请求获取数据(java Go)

3.解析获取到的数据(精确数据)

(1)找到新的?目标(url)回到第?一步(?自动化)

4.数据持久化

python3(原?生提供的模块):urlib.rquest:

(1)urlopen :

1.返回response对象

2.response.read()

3.bytes.decode("utf-8")

(2)get:传参

1.汉字报错 :解释器?ascii没有汉字,url汉字转码

(3)post

(4)handle处理理器?的?自定义

(5)urlError

python(原?生提供的):urlib2

接下来将的知识点:

5.request(第三?方)

6.数据解析:xpath bs4

7.数据存储

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.html","w",encoding="utf-8")as f:
        f.write(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=%E7%BE%8E%E5%A5%B3

    name = "美女"
    final_url = url+name
    print(final_url)
    #代码发送了请求
    #网址里面包含了汉字;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("02-encode.html","w",encoding="utf-8")as f:
        f.write(data)
    #UnicodeEncodeError: ‘ascii‘ codec can‘t encode
    # characters in position 10-11: ordinal not in range(128)
    #python:是解释性语言;解析器只支持 ascii 0 - 127
    #不支持中文

get_method_params()

 

初识爬虫

原文:https://www.cnblogs.com/sunBinary/p/10555630.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!