爬虫基础学习记录

news2024/11/15 20:40:00

爬虫介绍

互联网爬虫

如果我们把互联网比作一张大的蜘蛛网,那一台计算机上的数据便是蜘蛛网上的一个猎物,而爬虫程序就是一只小蜘蛛,沿着蜘蛛网抓取自己想要的数据

  • 解释1:通过一个程序,根据Url(http://www.taobao.com)进行爬取网页,获取有用信息
  • 解释2:使用程序模拟浏览器,去向服务器发送请求,获取响应信息

爬虫核心

  1. 爬取网页:爬取整个网页 包含了网页中所有得内容
  2. 解析数据:将网页中你得到的数据 进行解析
  3. 难点:爬虫和反爬虫之间的博弈

爬虫的用途

  • 数据分析/人工数据集
  • 社交软件冷启动
  • 舆情监控
  • 竞争对手监控

爬虫分类

通用爬虫:
实例

  • 百度、360、google、sougou等搜索引擎‐‐‐伯乐在线

功能

  • 访问网页‐>抓取数据‐>数据存储‐>数据处理‐>提供检索服务

robots协议

  • 一个约定俗成的协议,添加robots.txt文件,来说明本网站哪些内容不可以被抓取,起不到限制作用自己写的爬虫无需遵守

网站排名(SEO)

  1. 根据pagerank算法值进行排名(参考个网站流量、点击率等指标)
  2. 百度竞价排名

缺点

  1. 抓取的数据大多是无用的
  2. 不能根据用户的需求来精准获取数据

聚焦爬虫

功能

  • 根据需求,实现爬虫程序,抓取需要的数据

设计思路

  • 1.确定要爬取的url
    如何获取Url
  • 2.模拟浏览器通过http协议访问url,获取服务器返回的html代码
    如何访问
  • 3.解析html字符串(根据一定规则提取需要的数据)
    如何解析

反爬手段

1.User‐Agent:

  • User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU
    类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。

2.代理IP

  • 西次代理

  • 快代理

  • 什么是高匿名、匿名和透明代理?它们有什么区别?

    • 1.使用透明代理,对方服务器可以知道你使用了代理,并且也知道你的真实IP。
    • 2.使用匿名代理,对方服务器可以知道你使用了代理,但不知道你的真实IP。
    • 3.使用高匿名代理,对方服务器不知道你使用了代理,更不知道你的真实IP。

3.验证码访问

  • 打码平台
    • 云打码平台
    • 超级🦅

4.动态加载网页 网站返回的是js数据 并不是网页的真实数据

  • selenium驱动真实的浏览器发送请求

5.数据加密

  • 分析js代码

urllib库的使用

使用urllib来获取百度首页的源码

第一次实现(返回的是二进制)

import urllib.request
import urllib.parse

# (1)定义一个url 就是需要访问的地址
url = 'http://www.baidu.com'

# (2)模拟浏览器向服务器发送请求
response = urllib.request.urlopen(url)
# request = urllib.request.Request(url)

# (3) 获取响应中的页面的源码
# read() 返回的是字节形式的二进制数据
content = response.read()

# (4)打印
print(content)

在这里插入图片描述

第二次实现(出现中文)


import urllib.request
import urllib.parse

# (1)定义一个url 就是需要访问的地址
url = 'http://www.baidu.com'

# (2)模拟浏览器向服务器发送请求
response = urllib.request.urlopen(url)
# request = urllib.request.Request(url)

# (3) 获取响应中的页面的源码
# read() 返回的是字节形式的二进制数据
# 二进制 ->字符串 解码 decode('编码格式')
content = response.read().decode('utf-8')

# (4)打印
print(content)

在这里插入图片描述

一个类型6个方法


import urllib.request

url = 'http://www.baidu.com'

# 模拟浏览器向服务器发送请求
response = urllib.request.urlopen(url)

# 一个类型和六个方法
# print(type(response))  # <class 'http.client.HTTPResponse'>

# 按照一个字节一个字节的去读
# content = response.read()
# print(content)

# 返回多少个字节
# content = response.read(5)
# print(content)  # b'<!DOC'

# 读取一行
# content = response.readline()
# print(content)

# 一行一行的读,读所有的
# content = response.readlines()
# print(content)

# 返回状态码,如果是返回200,没错,其它的有问题
# print(response.getcode()) # 200

# 返回的是url地址
# print(response.geturl()) # http://www.baidu.com

# 返回的是一个状态信息
print(response.getheaders())

下载

  • 其中,视频地址找到对应的视频,F12或者右击检查,点击左上角箭头找到对应的src,复制即可
    在这里插入图片描述

import urllib.request

# 下载一个网页
url_page = 'http://www.baidu.com'
# 在python中,可以写变量的名字,也可以直接写值
# urllib.request.urlretrieve(url_page, 'baidu.html')
# 下载图片
url_img = 'data:image/jpeg;base64,' \
          '/9j/4AAQSkZJRgABAQEASABIAAD' \
          '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 '

# urllib.request.urlretrieve(url=url_img,filename='lisa.jpg')
# 下载视频
url_video = 'https://vd3.bdstatic.com/mda-njm4rp3ynmrcgbji/720p/h264/1666408939005073459/mda-njm4rp3ynmrcgbji.mp4?v_from_s=hkapp-haokan-suzhou&auth_key=1686207574-0-0-64a1636a497b253af8ac11833a417353&bcevod_channel=searchbox_feed&pd=1&cd=0&pt=3&logid=1774475530&vid=4484569357990666404&abtest=110193_2-110348_2&klogid=1774475530'

urllib.request.urlretrieve(url_video, 'lisa.mp4')

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

请求对象的定制

  • UA介绍:User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本。浏览器内核、浏览器渲染引擎、浏览器语言、浏览器插件等
    在这里插入图片描述
  • 不写headers会发现少了很多内容

import urllib.request

# 第一种反爬:UA反爬  使用请求对象的定制
url = 'https://www.baidu.com'

# url组成
# https://www.baidu.com/s?wd=lisa
# http/https  /www.baidu.com   80/443   s    wd=lisa  #
# 协议           主机           端口号     路径 参数      锚点
# http 80
# https 443
# mysql 3306
# oracle 1521
# redis 6379
# mongodb 27017

headers = {
    'User-Agent':
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 '
        'Safari/537.36 Edg/114.0.1823.37 '
}
# 因为urlopen方法中不能存储字典,所以headers不能传递进去
# 请求对象的定制
# 注意: 因为参数顺序的问题,不能直接写值,需要写参数
request = urllib.request.Request(url=url, headers=headers)

response = urllib.request.urlopen(request)
content = response.read().decode('utf-8')
print(content)

编解码

一个或少量

  • urllib.parse.quote('周杰伦')

import urllib.request
import urllib.parse

url = 'https://www.baidu.com/s?tn=15007414_9_dg&wd='
name = urllib.parse.quote('周杰伦')
url = url + name
print(name) # %E5%91%A8%E6%9D%B0%E4%BC%A6
headers = {
    'User-Agent':
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 '
        'Safari/537.36 '
        'Edg/114.0.1823.37 '
}

request = urllib.request.Request(url=url,headers=headers)
response = urllib.request.urlopen(request)
context = response.read().decode("utf-8")
print(context)

多个

  • urllib.parse.urlencode(data)

import urllib.request
import urllib.parse

base_url = 'https://www.baidu.com/s?'
data = {
    'wd':'周杰伦',
    'sex': '男',
    'location':'中国台湾省'
}
new_data = urllib.parse.urlencode(data)
url=base_url+new_data

headers = {
    'User-Agent':
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 '
        'Safari/537.36 '
        'Edg/114.0.1823.37 '
}

request = urllib.request.Request(url=url,headers=headers)
response = urllib.request.urlopen(request)
context = response.read().decode("utf-8")
print(context)

爬虫实战和小结

爬取豆瓣网前250的电影中文名

import requests
from bs4 import BeautifulSoup

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

for start_num in range(0,250,25):
    response = requests.get(f"https://movie.douban.com/top250?start={start_num}&filter=", headers=headers)
    html = response.text
    soup = BeautifulSoup(html, "html.parser")
    all_titles = soup.findAll("span",attrs={"class": "title"})

    for title in all_titles:
        title_string = title.string
        if "/" not in title_string:
            print(title_string)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

小结

其实如果爬取简单的内容,爬虫并不是多么的复杂,模拟发送一个http请求,然后将获取的内容根据需要进行解析即可。但是,另一方面,爬虫所包含的内容很多,需要不断的接触才能熟练的运用。就拿上面这个案例来说,其中涉及到了一个反扒手段,通过给其一个headers来解决的,同时,获取到的内容通过插件进行解析,比我们自己手动快了很多,然后根据页面结构,将其中class为title的电影名摘取出来。这些对于不同的需求以及页面都是不一样的,都需要我们会根据不同的情况进行相应的分析。同时,刚刚的案例只是将其打印出来,但有时候还需要做一个持久化处理或者对获取到的数据进行分析,这些都需要别的技术的支持。所以说,爬虫入门很简单,基本就那么几步,但是想要精通并且获取各种不同的信息进行处理还需要学习各种各样的知识。

对于第一阶段的爬虫学习到这里就算结束了,主要是一直以来都觉得爬虫很牛逼,所以一直想搞一搞,但学过后发现并没有那么的高深,所以说,还是要不断学习,只有不断地学习,才能将那些不懂的觉得很牛逼的东西变成一些小角色。当然,对于爬虫的学习并不会止于此,后期有空我还会接着学习从而将其具体的运用到所需要的场景中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/638524.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

❤ vue主要使用的版本和对应体系

❤ 项目主要使用的版本和对应体系 vue地址&#xff1a; https://cn.vuejs.org/ Vue所有版本地址 https://github.com/vuejs/core/blob/main/changelogs/CHANGELOG-3.2.md NPM镜像地址 npm install -g cnpm --registryhttps://registry.npm.taobao.org nvm 地址&#xff1a; htt…

element(兼容2.72以下的版本)实现树形数据+复选框的效果

用最新的element是可以实现树形数据的展示&#xff0c;但是没有复选框效果&#xff0c;用2.72以前的版本的话&#xff0c;是根本没有展开树形数据的效果&#xff0c;也没有复选框效果&#xff0c; 需求&#xff1a;在2.72以下的老版本上做一个树形展示的效果&#xff0c;并且还…

初识Notes Domino 14 Drop1

大家好&#xff0c;才是真的好。 周末花了点时间&#xff0c;安装了一下Notes Domino 14 Drop1版本。考虑到大多数人的习惯&#xff0c;没采用Docker或K8s方式来部署&#xff0c;也没采用一键配置功能&#xff0c;依旧通过传统方式一步一步进行安装和配置&#xff0c;这样大家…

【Spring Boot 初识丨五】beans 详解

上一篇讲了 Spring Boot 的主程序类 本篇来讲一讲 beans 详解 Spring Boot 初识&#xff1a; 【Spring Boot 初识丨一】入门实战 【Spring Boot 初识丨二】maven 【Spring Boot 初识丨三】starter 【Spring Boot 初识丨四】主应用类 beans 一、 定义二、 命名三、 生命周期3.1 …

Linux防火墙学习笔记7

安装apahce&#xff1a; yum install -y httpd echo 123 >> /var/www/html/index.html systemctl start httpd curl http://localhost 然后给iptables插入一条防火墙策略&#xff1a; iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT注意&#xff1a;这里使…

【Spring学习之更简单的读取和存储Bean对象】教会你使用五大类注解和方法注解去存储 Bean 对象

前言&#xff1a; &#x1f49e;&#x1f49e;今天我们依然是学习Spring&#xff0c;这里我们会更加了解Spring的知识&#xff0c;知道Spring是怎么更加简单的读取和存储Bean对象的。也会让大家对Spring更加了解。 &#x1f49f;&#x1f49f;前路漫漫&#xff0c;希望大家坚持…

高能预警!融云WICC发布《社交泛娱乐出海作战地图》

最近圈子里风很大的《社交泛娱乐出海作战地图》, 必须说&#xff0c;真的有亿点点厉害&#xff01;这简直是一张集社交泛娱乐市场、品类知识和出海实战指南于一体的教材级地图&#xff0c;实感入手不亏。关注【融云全球互联网通信云】了解更多 首先&#xff0c;容我先秀一把实…

Definition of regularity in PDE theory

Regularity is one of the vague yet very useful terms to talk about a vast variety of results in a uniform way. Other examples of such words include “dynamics” in dynamical systems (I have never seen a real definition of this term but everyone uses it, an…

学习Vue 之 创建一个 Vue 应用

文章目录 Vue.js概述了解 Vue创建一个 Vue 应用参考 Vue.js 概述 计划学习前端&#xff0c;已有一些HTML&#xff0c;js&#xff0c;CSS的基础知识&#xff0c;下一步学习Vue.js。 以下是一些适合新手的Vue.js教程&#xff0c;你可以根据自己的实际情况和需求选择适合自己的…

独家揭秘:Kotlin编译器前端—解析阶段

独家揭秘&#xff1a;Kotlin编译器前端&#xff1a;解析阶段 Kotlin编译器对我来说就像一个黑盒子&#xff0c;虽然有关于Kotlin PSI在IDE插件中有使用的文档&#xff0c;但除了源代码中留下的注释之外&#xff0c;几乎没有其他信息可用。接下来的文章中我们来探索Kotlin编译器…

6. WebGPU 将图像导入纹理

我们在上一篇文章中介绍了有关使用纹理的一些基础知识。在本文中&#xff0c;我们将介绍从图像导入纹理。 在上一篇文章中&#xff0c;通过调用 device.createTexture 创建了一个纹理&#xff0c;然后通过调用 device.queue.writeTexture 将数据放入纹理中。 device.queue 上还…

Axure教程—穿梭框(中继器+动态面板)

本文将教大家如何用AXURE中动态面板和中继器制作穿梭框效果 一、效果 预览地址&#xff1a;https://8k99mh.axshare.com 下载地址&#xff1a;https://download.csdn.net/download/weixin_43516258/87897661?spm1001.2014.3001.5503 二、功能 在待选区域选项中可以选择一个选…

CURL获取与使用

背景&#xff1a;在日常工作中&#xff0c;经常会遇到需要获取CURL构造请求来进行问题定位&#xff0c;那如何获取及使用CURL则成为一个测试人员必备的技能&#xff1b; CURL是什么 CURL是一个命令行工具&#xff0c;开发人员使用它来与服务器进行数据交互。 如何获取完整 C…

Python开源自动化工具Playwright安装及介绍

目录 前言 1、Playwright介绍 2、Playwright安装 3、实操演示 4、小结 总结&#xff1a; 前言 微软开源了一个非常强大的自动化项目叫 playwright-python 它支持主流的浏览器&#xff0c;包含&#xff1a;Chrome、Firefox、Safari、Microsoft Edge 等&#xff0c;同时支…

简单使用Hystrix

使用Hystrix之前&#xff0c;需要先对SpringCloud有所了解&#xff0c;然后才会使用的顺畅&#xff0c;它是我们SpringCould的一种保护机制&#xff0c;非常好用。 下面直接开始 先导入Hystrix所需要的依赖 <!-- 引入openfiegn--> <dependency> <groupId>org…

Java学习笔记(视频:韩顺平老师)3.0

如果你喜欢这篇文章的话&#xff0c;请给作者点赞哟&#xff0c;你的支持是我不断前进的动力。 因为作者能力水平有限&#xff0c;欢迎各位大佬指导。 目录 如果你喜欢这篇文章的话&#xff0c;请给作者点赞哟&#xff0c;你的支持是我不断前进的动力。 算数运算符 号使用…

体验 TDengine 3.0 高性能的第一步,请学会控制建表策略

正如我们之前所言&#xff0c;在 3.0 当中&#xff0c;我们在产品底层做了很大的变化调整&#xff0c;除了架构更加科学高效以外&#xff0c;用户体验也是我们重点优化的方向。以之前一篇文章为例&#xff1a;对于 Update 功能&#xff0c;用户不再需要任何配置 &#xff0c;默…

社交泛娱乐出海如何抓住AIGC?我在融云WICC上看到了答案

大模型掀起的AIGC时代&#xff0c;所有企业的所有业务与产品都值得利用大模型技术重做一遍&#xff0c;接下来也将有越来越多依托AIGC技术的创新应用涌现。关注【融云全球互联网通信云】了解更多 在社交泛娱乐赛道&#xff0c;AI大模型技术也呈现出了加速落地的态势。日前&…

功能测试如何转型自动化测试

在互联网行业&#xff0c;我们是那些被遗忘的技术人。 很多人都觉得&#xff0c;传统开发、运维才是技术含量的一个工作。 但是测试的入门门槛比较低&#xff0c;所做的事情相对有限&#xff0c; 这是我之前跟一些大型互联网软件测试负责人大牛们聊天的时候发现&#xff0c;…

学网络安全常用的10大工具

从事网络安全工作&#xff0c;手上自然离不开一些重要的网络安全工具。今天&#xff0c;分享10大网络安全工具。 一、Kali Linux Kali 是一个基于 Debian 的 Linux 发行版。它的目标就是为了简单&#xff1a;在一个实用的工具包里尽可能多的包含渗透和审计工具。Kali 实现了这…