1、Urllib
1、Urllib
一、爬虫基础
1、基本概念
1.爬取网页:爬取整个网页,包含了网页中所有得内容
2.解析数据:将网页中你得到的数据进行解析
3.难点:爬虫和反爬虫之间的博弈
2、爬虫用途
数据分析/人工数据集
社交软件冷启动
舆情监控
竞争对手监控
3、爬虫分类
3.1、通用爬虫:
实例
百度、360、google、sougou等搜索引擎--伯乐在线
功能
访问网页->抓取数据->数据存储->数据处理->提供检索服务
robots协议
一个约定俗成的协议,添加robots.txt文件,来说明本网站哪些内容不可以被抓取,起不到限制作用
自己写的爬虫无需遵守
网站排名(SEO)
1.根据pagerank算法值进行排名(参考个网站流量、点击率等指标)
2.百度竞价排名
缺点
1.抓取的数据大多是无用的
2.不能根据用户的需求来精准获取数据
3.2、聚焦爬虫
功能
根据需求,实现爬虫程序,抓取需要的数据
设计思路
1.确定要爬取的ur1
如何获取Ur1
2.模拟浏览器通过http协议访问url,获取服务器返回的html代码
如何访问
3.解析html字符串(根据一定规则提取需要的数据)
如何解析
4、反爬手段
1.User-Agent:
User Agent中文名为用户代理,简称UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
2.代理IP
西次代理
快代理
什么是高匿名、匿名和透明代理?它们有什么区别?
1.使用透明代理,对方服务器可以知道你使用了代理,并且也知道你的真实IP。
2.使用匿名代理,对方服务器可以知道你使用了代理,但不知道你的真实IP
3.使用高匿名代理,对方服务器不知道你使用了代理,更不知道你的真实IP。
3.验证码访问
打码平台
云打码平台
超级
4.动态加载网页网站返回的是js数据并不是网页的真实数据
selenium驱动真实的浏览器发送请求
5.数据加密
分析js代码
5、urllib库使用
urllib.request.urlopen()模拟浏览器向服务器发送请求
response 服务器返回的数据
response的数据类型是HttpResponse
字节-->字符串
解码decode
字符串-->字节
编码encode
read() 字节形式读取二进制 扩展:rede(5)返回前几个字节
readline() 读取一行
readlines 一行一行读取直至结束
getcode 获取状态码
geturl() 获取url
getheaders()获取headers
urllib.request.urlretrieve
请求网页
请求图片
请求视频
6、获取百度网页源码
import urllib.request # 定义一个URL url = 'http://www.baidu.com/' # 模拟浏览器向服务器发送请求 response = urllib.request.urlopen(url) # 获取响应中的页面的源码 # 将二进制的数据转换为字符串 解码/decode() charset:编码格式 content = response.read().decode('utf-8') # 返回的是字节形式的二进制数据 # 打印数据 print(content)
7、