0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python-爬虫开发01

汽车电子技术 来源:程序猿知秋 作者:程序猿知秋 2023-02-16 15:55 次阅读

爬虫基本概念

爬虫的定义

  • 网络爬虫(被称为 网页蜘蛛,网络机器人 ),就是 模拟客户端发送网络请求 ,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序
  • 一般来说,只要浏览器上能做的事情,爬虫都可以做

**爬虫的分类

**

  • 通用爬虫 :通常指搜索引擎的爬虫
  • 聚集爬虫 :针对特定网站或某些特定网页的爬虫

ROBOTS协议

  • Robots协议: 也叫robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的
  • 如果将网站视为酒店里的一个房间,robots.txt就是主人在房间门口悬挂的“请勿打扰”或“欢迎打扫”的提示牌。这个文件告诉来访的搜索引擎哪些房间可以进入和参观,哪些房间因为存放贵重物品,或可能涉及住户及访客的隐私而不对搜索引擎开放。但robots.txt不是命令,也不是防火墙,如同守门人无法阻止窃贼等恶意闯入者

图片

举例:

  • 访问淘宝网的robots文件: https://www.taobao.com/robots.txt

    图片* 很显然淘宝不允许百度的机器人访问其网站下其所有的目录

  • 如果允许所有的链接访问应该是:Allow:/

http和https的概念

  • http

    • 超文本传输协议
    • 默认端口号:80
  • https

    • HTTP+SSL(安全套接字层)
    • 默认端口号:443
  • **HTTPS比HTTP更安全,但是性能更低

    **

图片

URL的形式

  • sheme://host[:port#]/path/.../[?query-string][#anchor]
    • scheme:协议(例如:http、https、ftp)
    • host:服务器ip地址/域名
    • port:服务器端口号
    • path:访问资源的路径
    • query-string:请求的参数
    • anchor:锚(跳转到网页的指定锚点位置)
    • 例:http://item.jd.com/100008959687.html#product-detail

Http常见请求头

  • Host (主机和端口号)
  • Connection(链接类型)
  • Upgrade-insecure-Requests(升级为https请求)
  • User-Agent(浏览器名称)
  • Accept(传输文件类型)
  • Referer(页面跳转处)
  • Accept-Encoding(文件编解码格式)
  • Cookie
  • x-requested-with:XMLHttpRequest(是Ajax异步请求)

图片

Http常见响应码

  • 200:成功
  • 302:临时性重定向到新的url
  • 404:请求的路径找不到
  • 500:服务器内部错误

rquests模块

requests的官网

  • https://docs.python-requests.org/zh_CN/latest/index.html

图片

**示例:下载官网上的图片

**

import requests


url="https://docs.python-requests.org/zh_CN/latest/_static/requests-sidebar.png"
response=requests.get(url)


# 响应状态码为200,表示请求成功
if response.status_code==200:
    # 生成图片
    with open("aa.png","wb") as f:
        f.write(response.content)

response.text 和 response.content 的区别

  • response.text
    • 类型:str
    • 解码类型:根据http头部对响应的编码作出有根据的推测,推测的文本编码
    • 修改编码的方法:response.encoding='gbk'
  • response.content
    • 类型:bytes
    • 解码类型:没有指定
    • 修改编码的方法:response.content.decode('utf-8')

**requests请求带header

**

  • 主要是模拟浏览器,欺骗服务器,获取和浏览器一致的内容
  • header的数据结构是 字典

示例

import requests


respons=requests.get("http://www.baidu.com")
print(respons.request.headers)


# 设置header 模拟谷歌浏览器
headers={
    "User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"
}
respons2=requests.get("http://www.baidu.com",headers=headers)
print(respons2.request.headers)

图片

获取User-Agent的值

图片

带参数的requests请求

import requests


url="http://www.baidu.com/s?"
# 添加参数
params={
    "wd":"hello"
}


# 方式一
respons=requests.get(url,params=params)
# 方式二
respons2=requests.get("http://www.baidu.com/s?wd={}".format("hello"))


print(respons.status_code)
print(respons.request.url)
print(respons2.status_code)
print(respons2.request.url)

图片

requests发送post请求

  • 语法
    • response=requests.post("http://www.baidu.com/",data=data,headers=headers)
    • data的数据结构是 字典
  • 示例
import requests


url="https://www.jisilu.cn/data/cbnew/cb_list/?___jsl=LST___t=1617719326771"
headers={
    "User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"
}


params={
    "curr_iss_amt": 20
}


respons=requests.post(url,data=params,headers=headers)
print(respons.content.decode())

requests使用代理方式

  • 使用代理的原因
    • 让服务器以为不是同一个客户端请求
    • 防止我们的真实地址被泄露,防止被追究
  • 语法
    • requetst.get("http://www.baidu.com",proxies=proxies)
    • proxies的数据结构 字典
    • proxies={ "http":"http://12.33.34.54:8374","https":"https://12.33.34.54:8374" }
  • 示例
import requests


url="http://www.baidu.com"
headers={
    "User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"
}


proxies={
    "http": "175.42.158.211:9999"
}
respons=requests.post(url,proxies=proxies)
print(respons.status_code)

**cookie和session的区别

**

  • cookie数据存放在客户的浏览器上,session数据放在服务器上
  • cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗
  • session会在一定时间内保存在服务器上。当访问增多会比较占用服务器性能
  • 单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie

爬虫处理cookie和session

  • 带上cookie、session的好处
    • 能够请求到登录之后的页面
  • 带上cookie、session的坏处
    • 一套cookie和session往往和一个用户对应,请求太快,请求次数太多,容易被服务器识别为爬虫
  • 如果不需要cookie的时候尽量不去使用cookie

**requests 处理cookies、session请求

**

  • reqeusts 提供了一个session类,来实现客户端和服务端的会话保持
  • 使用方法
    • 实例化一个session对象
    • 让session发送get或者post请求
  • 语法
    • session=requests.session()
    • response=session.get(url,headers)
  • 示例
import requests


headers={
    "User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"
}


data={
    "email":"用户名",
    "password":"密码"
}


session=requests.session()
# session发送post请求,cookie保存在其中
session.post("http://www.renren.com/PLogin.do",data=data,headers=headers)
# 使用session请求登录后才能访问的页面
r=session.get("http://www.renren.com/976564425",headers=headers)
print(r.content.decode())
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 互联网
    +关注

    关注

    54

    文章

    10910

    浏览量

    100772
  • 程序
    +关注

    关注

    114

    文章

    3631

    浏览量

    79555
  • 网络爬虫
    +关注

    关注

    1

    文章

    50

    浏览量

    8590
收藏 人收藏

    评论

    相关推荐

    Python数据爬虫学习内容

    ,利用爬虫,我们可以解决部分数据问题,那么,如何学习Python数据爬虫能?1.学习Python基础知识并实现基本的爬虫过程一般获取数据的过
    发表于 05-09 17:25

    Python爬虫与Web开发库盘点

    Python爬虫和Web开发均是与网页相关的知识技能,无论是自己搭建的网站还是爬虫爬去别人的网站,都离不开相应的Python库,以下是常用的
    发表于 05-10 15:21

    Python爬虫初学者需要准备什么?

    ,想从事这方面的工作,需掌握以下知识:1. 学习Python基础知识并实现基本的爬虫过程一般获取数据的过程都是按照发送请求-获得页面反馈-解析并且存储数据 这三个流程来实现的。这个过程其实就是模拟
    发表于 06-20 17:14

    0基础入门Python爬虫实战课

    学习资料良莠不齐爬虫是一门实践性的技能,没有实战的课程都是骗人的!所以这节Python爬虫实战课,将帮到你!课程从0基础入门开始,受众人群广泛:如毕业大学生、转行人群、对Python
    发表于 07-25 09:28

    Python爬虫简介与软件配置

    Python爬虫练习一、爬虫简介1. 介绍2. 软件配置二、爬取南阳理工OJ题目三、爬取学校信息通知四、总结五、参考一、爬虫简介1. 介绍网络爬虫
    发表于 01-11 06:32

    python网络爬虫概述

    的数据,从而识别出某用户是否为水军学习爬虫前的技术准备(1). Python基础语言: 基础语法、运算符、数据类型、流程控制、函数、对象 模块、文件操作、多线程、网络编程 … 等(2). W3C标准
    发表于 03-21 16:51

    python-控制khr3hv-master机器人

    python-控制khr3hv机器人,感兴趣的小伙伴们可以瞧一瞧。
    发表于 11-22 15:40 2次下载

    详细用Python写网络爬虫

    详细用Python写网络爬虫
    发表于 09-07 08:40 32次下载
    详细用<b class='flag-5'>Python</b>写网络<b class='flag-5'>爬虫</b>

    完全自学指南Python爬虫BeautifulSoup详解

    完全自学指南Python爬虫BeautifulSoup详解
    发表于 09-07 08:55 36次下载
    完全自学指南<b class='flag-5'>Python</b><b class='flag-5'>爬虫</b>BeautifulSoup详解

    WebSpider——多个python爬虫项目下载

    此文档包含多个python爬虫项目
    发表于 03-26 09:29 3次下载

    Python爬虫8个常用的爬虫技巧分析总结

    python也差不多一年多了,python应用最多的场景还是web快速开发爬虫、自动化运维:写过简单网站、写过自动发帖脚本、写过收发邮件脚本、写过简单验证码识别脚本。
    的头像 发表于 08-18 11:45 4878次阅读

    python爬虫入门教程之python爬虫视频教程分布式爬虫打造搜索引擎

    本文档的主要内容详细介绍的是python爬虫入门教程之python爬虫视频教程分布式爬虫打造搜索引擎
    发表于 08-28 15:32 29次下载

    python爬虫框架有哪些

    本视频主要详细介绍了python爬虫框架有哪些,分别是Django、CherryPy、Web2py、TurboGears、Pylons、Grab、BeautifulSoup、Cola。
    的头像 发表于 03-22 16:13 6461次阅读

    Python写网络爬虫

    Python写网络爬虫的方法说明。
    发表于 06-01 11:55 21次下载

    利用Python编写简单网络爬虫实例

    利用 Python编写简单网络爬虫实例2 实验环境python版本:3.3.5(2.7下报错
    发表于 02-24 11:05 13次下载