爬虫系统学习

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 爬虫系统学习

详细了解一下爬虫

#1爬虫究竟是合法还是违法的?
    # 在法律上不被禁止  算是中立性

# 2爬虫所带来风险主要体现在以下2个方面:
    # 爬虫干扰了被访问网站的正常运营;
    # 爬虫抓取了受到法律保护的特定类型的数据或信息。

# 爬虫的分类
# 通用爬虫:通用爬虫是搜索引擎(Baidu、Google、Yahoo等)“抓取系统”的重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。 简单来讲就是尽可能的;把互联网上的所有的网页下载下来,放到本地服务器里形成备分,在对这些网页做相关处理(提取关键字、去掉广告),最后提供一个用户检索接口。
# 聚焦爬虫:聚焦爬虫是根据指定的需求抓取网络上指定的数据。例如:获取豆瓣上电影的名称和影评,而不是获取整张页面中所有的数据值。
# 增量式爬虫:增量式是用来检测网站数据更新的情况,且可以将网站更新的数据进行爬取(后期会有章节单独对其展开详细的讲解)。


# 反爬机制
# 反反爬策略
# robots协议:
# 几乎是和爬虫技术诞生的同一时刻,反爬虫技术也诞生了。在90年代开始有搜索引擎网站利用爬虫技术抓取网站时,一些搜索引擎从业者和网站站长通过邮件讨论定下了一项“君子协议”—— robots.txt。即网站有权规定网站中哪些内容可以被爬虫抓取,哪些内容不可以被爬虫抓取。这样既可以保护隐私和敏感信息,又可以被搜索引擎收录、增加流量。
#
# 历史上第一桩关于爬虫的官司诞生在2000年,eBay将一家聚合价格信息的比价网站BE告上了法庭,eBay声称自己已经将哪些信息不能抓取写进了robots协议中,但BE违反了这一协议。但BE认为eBay上的内容属于用户集体贡献而不归用户所有,爬虫协议不能用作法律参考。最后经过业内反复讨论和法庭上的几轮唇枪舌战,最终以eBay胜诉告终,也开了用爬虫robots协议作为主要参考的先河。
#
# 最后,可以通过网站域名 + /robots.txt的形式访问该网站的协议详情,例如:www.taobao.com/robots.txt



# HTTP协议:
# 常见的请求头信息
#              accept:浏览器通过这个头告诉服务器,它所支持的数据类型
#         Accept-Charset: 浏览器通过这个头告诉服务器,它支持哪种字符集
#         Accept-Encoding:浏览器通过这个头告诉服务器,支持的压缩格式
#         Accept-Language:浏览器通过这个头告诉服务器,它的语言环境
#         Host:浏览器通过这个头告诉服务器,想访问哪台主机
#         If-Modified-Since: 浏览器通过这个头告诉服务器,缓存数据的时间
#         Referer:浏览器通过这个头告诉服务器,客户机是哪个页面来的 防盗链
#         Connection:浏览器通过这个头告诉服务器,请求完后是断开链接还是何持链接
#         X-Requested-With: XMLHttpRequest 代表通过ajax方式进行访问
#         User-Agent:请求载体的身份标识
#
# 常见的响应头信息
#                     Location: 服务器通过这个头,来告诉浏览器跳到哪里
#             Server:服务器通过这个头,告诉浏览器服务器的型号
#             Content-Encoding:服务器通过这个头,告诉浏览器,数据的压缩格式
#             Content-Length: 服务器通过这个头,告诉浏览器回送数据的长度
#             Content-Language: 服务器通过这个头,告诉浏览器语言环境
#             Content-Type:服务器通过这个头,告诉浏览器回送数据的类型
#             Refresh:服务器通过这个头,告诉浏览器定时刷新
#             Content-Disposition: 服务器通过这个头,告诉浏览器以下载方式打数据
#             Transfer-Encoding:服务器通过这个头,告诉浏览器数据是以分块方式回送的
#             Expires: -1 控制浏览器不要缓存
#             Cache-Control: no-cache
#             Pragma: no-cache
# https协议=http+加密
#
                    # 对称秘钥加密 1.0
                    # 非对称秘钥加密  2.0
                    # 证书秘钥加密  3.0

View Code

第一个实例:动态访问百度搜索

import requests
# UA伪装
headers = {
            'Accept-Encoding': 'gzip, deflate, sdch',
            'Accept-Language': 'en-US,en;q=0.8',
            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36',
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
            'Referer': 'http://www.baidu.com/',
            'Connection': 'keep-alive',
        }
url = "https://www.baidu.com/s?"
wd = input("输入关键字。。。")
param = {
    "wd":wd
}
res = requests.get(url,param,headers=headers)

with open("a.html","w",encoding="utf-8")as f:
    f.write(res.text)

View Code

第二个实例:访问百度翻译:

这个有点疑问,我去抓包,看不到sub   看到的链接访问不成功,不知道为啥,还未解决。

url  = "https://fanyi.baidu.com/sug"
# url = "https://fanyi.baidu.com/v2transapi?from=zh&to=en"
kw = input("输入需要翻译的词语。。。")
data = {
"kw": kw
}
res = requests.post(url,data=data,headers=headers).json()
print(res)
#总结一下,支持词语,英译汉 汉译英   别的没测试 不支持句子
#
#

View Code

如何获取动态加载的数据:

自己用抓包工具,自己去看,自己去找,自己去分析

View Code

 

================================数据解析=====================================

1.正则------>跳转

2.bs4------>跳转

3.xpath---->跳转

 

================================验证码识别=====================================

超级鹰

================================防止IP被封=====================================

 

快代理

西祠代理

www.goubanjia.com

#我没测试成功
import requests
import random
if __name__ == "__main__":
    #不同浏览器的UA
    header_list = [
        # 遨游
        {"user-agent": "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)"},
        # 火狐
        {"user-agent": "Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"},
        # 谷歌
        {
            "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11"}
    ]
    #不同的代理IP
    proxy_list = [
        {"http": "112.115.57.20:3128"},
        {'http': '121.41.171.223:3128'}
    ]
    #随机获取UA和代理IP
    header = random.choice(header_list)
    proxy = random.choice(proxy_list)
    url = 'http://www.baidu.com/s?ie=UTF-8&wd=ip'
    #参数3:设置代理
    response = requests.get(url=url,headers=header,proxies=proxy)
    response.encoding = 'utf-8'
    with open('daili.html', 'wb') as fp:
        fp.write(response.content)

================================进程线程池异步===============================

链接在这里,但是不推荐使用

================================协程异步=====================================

链接在这里

================================爬虫自动化=====================================

跳转过去吧

================================框架==================================

跳转过去吧



相关文章
|
1月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
102 4
|
1天前
|
数据采集
爬虫之bs4学习
爬虫之bs4学习
|
3月前
|
数据采集 存储 监控
构建高效爬虫系统:设计思路与案例分析
构建高效爬虫系统涉及关键模块如爬虫引擎、链接存储、内容处理器等,以及用户代理池、IP代理池等反反爬策略。评估项目复杂性考虑数据规模、网站结构、反爬虫机制等因素。案例分析展示了电子商务价格比较爬虫的设计,强调了系统模块化、错误处理和合规性的重要性。爬虫技术需要不断进化以应对复杂网络环境的挑战。
105 1
|
4月前
|
数据采集 自然语言处理 Python
在 Django 中设计爬虫系统的数据模型与多对多关系
在构建爬虫系统时,设计合理的数据模型和多对多关系对系统的性能和可维护性至关重要。本文将探讨如何使用 Django 来设计爬虫系统的数据模型。
|
3月前
|
数据采集 NoSQL MongoDB
使用多进程和 Scrapy 实现高效的 Amazon 爬虫系统
在这篇博客中,将展示如何使用多进程和 Scrapy 来构建一个高效的 Amazon 爬虫系统。通过多进程处理,提高爬虫的效率和稳定性,同时利用 Redis 进行请求调度和去重。
|
数据采集 数据安全/隐私保护 索引
爬虫学习
爬虫学习
|
数据采集 JSON 网络协议
爬虫学习(前期知识学习)
爬虫学习(前期知识学习)
|
数据采集 自然语言处理 Java
爬虫系统的核心:如何创建高质量的HTML文件?
在网页抓取或爬虫系统中,HTML文件的创建是一项重要的任务。HTML文件是网页的基础,包含了网页的所有内容和结构。在爬虫系统中,我们需要生成一个HTML文件,以便于保存和处理网页的内容。
|
数据采集 存储 调度
使用多线程爬虫提高商品秒杀系统的吞吐量处理能力
使用多线程爬虫提高商品秒杀系统的吞吐量处理能力
|
数据采集 存储 分布式计算
构建可扩展的分布式爬虫系统
构建可扩展的分布式爬虫系统