爬虫入门第一天

本文介绍了Python爬虫的基础知识,包括导入urllib库、发送HTTP请求、处理响应内容、编码转换,以及GET和POST请求的区别。此外,还讨论了爬虫的合法性、爬虫的分类,如通用爬虫和聚焦爬虫,并提到了反爬虫技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

爬虫入门第一天—1

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(str_data)
    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()

首先导入urllib库里面的request这个功能  然后定义一个函数。

然后在函数内部进行定义一个url的函数,然后赋值百度的url地址。url地址就是浏览网页的地址,也就是域名,网址。

然后用response进行调用urllib里面的request的urlopen进行传入url这个函数。

然后用print打印了一下这个response是内容。 <http.client.HTTPResponse object at 0x000001EA03D4E9E8> 

然后定义一个data进行读取这个response的内容,语句response.read()  然后默认的话 打印的话 是一串bytes类型的东西

然后用print输出这个data的内容,就会发现这是一行的内容,因为这个是bytes文件,所以这里就要对它进行转换成字符串。

也就是decode("utf-8")然后重新赋值个另外一个函数,这里我写的是str_data,大概内容如下图。

然后如果要写入文件的话,用with 然后open,这个open是打开的意思,详情可以百度Python文件管理,然后里面第一个参数是写文件名.文件,第二个是文件写入方式,第三个encoding是写编码格式,一般常规都是utf-8,然后在后面进行as f。

然后f.write这个就是传入的意思,可以把刚才上面转换字符串的那个内容进行传入进来。然后进行调用函数就行了。

 

爬虫第一天-2

import urllib.request
import urllib.parse
import string

def get_method_params():

    url = "http://www.baidu.com/s?wd="
    # 拼接字符串(汉字)
    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)
    # # python是解释性语言 解析器只支持ASCII0-127  不支持中文


get_method_params()

常规先贴代码,首先导入这三个库,一个是爬虫,一个是转译,一个是字符串

然后定义一个百度的url,另外还定义了一个其他的一个中文,进行拼接。然后可以看下拼接效果。

这里就可以看到,完全没有拼接好,之所以出现这个原因是因为Python是解释性编程语言,解析器ASCII码不支持中文,所以就会出现了这个样子。但是这样的话,可以利用另外的两个库,进行转译,把中文转换成ASCII码格式,让解析器可以识别。

也就是上面的那个urllib.parse.quote然后里面包着那个拼接的url,然后safe=string.printable,这样就可以转换成ASCII码了。

然后下面的内容同上,调用,访问,保存,改码。

学习Python第一天。笔记

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

get请求 常用

(1)比较便捷

缺点:不安全明文

参数的长度有限制

 

post请求

(1)比较安全

(2)数据整体没有限制

(3)上传文件

put(不安全)

delete(删除一些信息)

发送网络请求需要带一些数据给服务器不带数据也可以

请求头里面 requestheader

返回数据 response

head(返回请求头)

(1)Accept:文本格式

(2)Accept-Encoding: 编码格式

(3)Connection: 长链接;短连接

(4)Cookie 验证用的

(5)Host:域名

(6)Referer :从哪个页面跳转来的

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

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

(1)爬虫的价值:

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

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

3.流量

4.指数:腾讯指数,微博指数

合法性:灰色产业

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

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

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

爬取爱奇艺视频(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.txt

反爬虫:干掉用户

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

爬虫工作原理:

1.确认你抓取目标的URL 核心(URL)

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

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

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

4.数据持久化

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

(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.数据存储

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值