首页 > 编程语言 >Python爬虫(1-4)-基本概念、六个读取方法、下载(源代码、图片、视频 )、user-agent反爬

Python爬虫(1-4)-基本概念、六个读取方法、下载(源代码、图片、视频 )、user-agent反爬

时间:2024-07-10 23:29:47浏览次数:18  
标签:网页 Python 反爬 request 爬虫 urllib url 源代码 下载

Python爬虫

一、爬虫相关概念介绍

1.什么是互联网爬虫

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

解释1:通过一个程序,根据URL进行爬取网页,获取有用信息
解释2:使用程序模拟浏览器,去向服务器发送请求,获取响应信息

2.爬虫核心

  • 爬取网页:爬取整个网页,包含了网页中所有的内容
  • 解析数据:将网页中你得到的数据进行解析,也就是找到你所需要的数据
  • 难点:爬虫和反爬虫之间的博弈。即“抓取数据”和”拒绝给你数据”之间的博弈

3.爬虫分类

  • 通用爬虫
  • 聚焦爬虫

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

设计思路

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

4.urllib库使用

二、一个类型and六个方法

HTTPResponse类型

表示从服务器接收到的 HTTP 响应的对象类型,通常在处理网络请求时使用。它包含了服务器返回的各种信息,如状态码、响应头和响应体

  • read()
  • readline() 只读取一行
  • readlines() 读取多行
  • getcode() 获取状态码
  • geturl()
  • getheaders() 获取状态信息

三、下载

下载网页

#下载网页
url_page='http://www.baidu.com'
urllib.request.urlretrieve(url_page,'baidu.html')

下载图片

通过“复制图像链接”获取图片的存取路径,注意urlretrieve()函数里要对应好文件格式

#下载图片
url_img='https://ww1.sinaimg.cn/mw690/007SWX7Ugy1hr6kqd0netj32wi4crqve.jpg'
urllib.request.urlretrieve(url_img,'zhouyiran.jpg')

下载视频

鼠标右击选择“检查”

# 下载视频
url_video='https://vdept3.bdstatic.com/mda-pi79hyfq8jscww7u/360p/h264/1694155424021989258/mda-pi79hyfq8jscww7u.mp4?v_from_s=hkapp-haokan-hbf&auth_key=1720607496-0-0-d017b040f470523698685d8261770983&bcevod_channel=searchbox_feed&pd=1&cr=0&cd=0&pt=3&logid=1896481070&vid=10142877359436078513&klogid=1896481070&abtest=101830_2-102148_1-17451_2-3000225_3'
urllib.request.urlretrieve(url_video,'zhou.mp4')

四、请求对象的定制(user-agent反爬)

HTTPHTTP以明文形式传输数据,数据在传输过程中没有加密,容易被中间人截获和篡改。
HTTPSHTTPS使用SSL/TLS协议对数据进行加密,确保数据在传输过程中是安全的,即使被截获也无法轻易解密

user-agentHttp协议中的一部分,属于头域的组成部分,User Agent也简称UA。它是一个特殊字符串头,是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识。通过这个标识,用户所访问的网站可以显示不同的排版从而为用户提供更好的体验或者进行信息统计;例如用手机访问谷歌和电脑访问是不一样的,这些是谷歌根据访问者的UA来判断的。UA可以进行伪装。

URL的组成

首先找到百度首页的user-agent

然后用以下代码进行反爬

import urllib.request

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

# 构造字典
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:127.0) Gecko/20100101 Firefox/127.0'
}

# 因为参数位置不对应,所以要写明参数名,再写参数值
request=urllib.request.Request(url=url,headers=headers)

# 进行包装后再读取
response=urllib.request.urlopen(request)

content=response.read().decode('utf-8')

print(content)

标签:网页,Python,反爬,request,爬虫,urllib,url,源代码,下载
From: https://www.cnblogs.com/lxxa/p/18295189

相关文章

  • Python学习笔记(一)(更新中)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档Python基础语法(一)一、变量1、变量命名的规则2、变量的常见类型二、注释提示:以下是本篇文章正文内容,下面案例可供参考一、变量变量是指存储信息的容器。变量的赋值包括变量名、等号、存储的信息这......
  • python原型链污染
    python原型链污染原型链污染python中,对象的属性和方法可以通过原型链来继承和获取每一个对象都有一个原型,定义了其可以访问的属性和方法,所以可以通过修改原型链中的属性来利用漏洞攻击当对象访问属性或方法时,会先对自身进行查找,找不到就一次往上级查找只能污染类的属性,不能......
  • Python潮流周刊的优惠券和精美电子书(EPUB、PDF、Markdown)
    Python潮流周刊从2023.05.13连载至今,本周即将发布第60期,这意味着我们又要达成一个小小的里程碑啦!每周坚持做分享,周复一周,这对自己的精力和意志是一项不小的挑战。于是,为了让自己获得一些仪式感,我给自己定了一个较为合理的时间目标,就是每30期周刊作为一季。划分出“每一季......
  • Python 数组类型转树形结构
    今天突然想用到这个功能 结果百度到的 基本是写乱糟糟的一堆代码 无奈只好亲自操刀话不多说,先上代码:classTools:@staticmethoddeflist_to_tree(data,pid=0):children=[itemforitemindataifitem['pid']==pid]forchildinchi......
  • Python 数据挖掘
    数据挖掘基础数据挖掘:这种从数据中“淘金”,从大量数据(包括文本)中挖掘出隐含的、未知的、对决策有潜在价值的关系、模式和趋势,并用这些知识和规则建立用于决策支持的模型,提供预测性决策支持的方法、工具和过程,就是数据挖掘;它是利用各种分析工具在大量数据中寻......
  • Python Selenium+cookie+XPATH爬取数据
    以某科研基金信息平台为例,写了一个基于selenium的web自动化爬虫。不带验证码防反爬以及代理ip池,是最基础的自动化工具爬虫。一、首先,此平台需要登录后才能正常访问,否则数据不全,因此需要登录后获取cookie,以便selenium能够以登录状态运行1.F12打开开发者工具,找到network(网络),在登录......
  • Python中的元组:为什么它们比列表更快?
    引言        在Python编程语言中,数据结构是存储和组织数据的强大工具。Python提供了多种内置数据结构,如列表(List)、字典(Dictionary)、集合(Set)等。元组(Tuple)是其中一种非常重要的数据结构,它因其独特的特性和用途,在Python编程中占有一席之地。一、元组的定义     ......
  • 【每日一练】python文件读.写.追加基本用法
    """本节课程内容:1.打开一个文件,模式为写入2.用传参方式写入文件内容3.如何追加文件内容4.如何读取新写入的文件5.牢记操作完一定要关闭程序使用close()函数Ps:如果写完文件后就读取文件,需要使用seek(0)把指针复位到开头。否则,下面读取文件为空,因为写完后指针会停留在尾......
  • python+flask计算机毕业设计小型社区疫情期间应急线上管理系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着全球疫情的持续蔓延,小型社区作为社会的基本单元,其疫情防控能力直接关系到居民的生命安全与社会的稳定。疫情期间,传统的管理方式面临诸......
  • TIOBE 7月编程排行榜出炉!Python再次出圈
    又到了周三,本周有过半了,大家好呀~~每月的TIOBE编程排行榜都是技术社区关注的焦点,作为编程语言流行度的晴雨表,它反映了行业趋势和技术走向。2024年7月的榜单揭晓了一个重要变化:Python再次登上榜首,成为最受欢迎的编程语言。这个消息对于开发者和企业来说,都具有非凡的意义。 ......