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爬虫(1-4)-基本概念、六个读取方法、下载(源代码、图片、视频 )、user-agent反爬的更多相关文章

  1. Python爬虫突破封禁的6种常见方法

    转 Python爬虫突破封禁的6种常见方法 2016年08月17日 22:36:59 阅读数:37936 在互联网上进行自动数据采集(抓取)这件事和互联网存在的时间差不多一样长.今天大众好像更倾向于用 ...

  2. Python爬虫之PyQuery使用(六)

    Python爬虫之PyQuery使用 PyQuery简介 pyquery能够通过选择器精确定位 DOM 树中的目标并进行操作.pyquery相当于jQuery的python实现,可以用于解析HTML网 ...

  3. Python爬虫个人记录(二) 获取fishc 课件下载链接

    参考: Python爬虫个人记录(一)豆瓣250 (2017.9.6更新,通过cookie模拟登陆方法,已成功实现下载文件功能!!) 一.目的分析 获取http://bbs.fishc.com/for ...

  4. Python之路(第四十六篇)多种方法实现python线程池(threadpool模块\multiprocessing.dummy模块\concurrent.futures模块)

    一.线程池 很久(python2.6)之前python没有官方的线程池模块,只有第三方的threadpool模块, 之后再python2.6加入了multiprocessing.dummy 作为可以使 ...

  5. python爬虫与mysql,mongobd(1)(2)第一个视频python_pymysql 安装与使用类型,import解决 问题之模块引ru 就是解决你的问题

    import pymysql.cursors ''' 1.创建连接 2.创建游标 3.执行sql 5.接受结果 ''' # 1.连接 connection =pymysql.Connect( # 域名 ...

  6. Python爬虫入门教程 2-100 妹子图网站爬取

    妹子图网站爬取---前言 从今天开始就要撸起袖子,直接写Python爬虫了,学习语言最好的办法就是有目的的进行,所以,接下来我将用10+篇的博客,写爬图片这一件事情.希望可以做好. 为了写好爬虫,我们 ...

  7. [Python爬虫] scrapy爬虫系列 <一>.安装及入门介绍

    前面介绍了很多Selenium基于自动测试的Python爬虫程序,主要利用它的xpath语句,通过分析网页DOM树结构进行爬取内容,同时可以结合Phantomjs模拟浏览器进行鼠标或键盘操作.但是,更 ...

  8. Python爬虫入门教程 61-100 写个爬虫碰到反爬了,动手破坏它!

    python3爬虫遇到了反爬 当你兴冲冲的打开一个网页,发现里面的资源好棒,能批量下载就好了,然后感谢写个爬虫down一下,结果,一顿操作之后,发现网站竟然有反爬措施,尴尬了. 接下来的几篇文章,我们 ...

  9. Python 爬虫——抖音App视频抓包

    APP抓包 前面我们了解了一些关于 Python 爬虫的知识,不过都是基于 PC 端浏览器网页中的内容进行爬取.现在手机 App 用的越来越多,而且很多也没有网页端,比如抖音就没有网页版,那么上面的视 ...

  10. 23个Python爬虫开源项目代码,让你一次学个够

    今天为大家整理了23个Python爬虫项目.整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心.所有链接指向GitHub,祝大家玩的愉快 1.WechatSogou [1]– 微信公众号 ...

随机推荐

  1. 鸿蒙HarmonyOS实战-Stage模型(开发卡片事件)

    一.开发卡片事件 HarmonyOS元服务卡片页面(Metaservice Card Page)是指在HarmonyOS系统中,用于展示元服务的页面界面.元服务是指一组提供特定功能或服务的组件,例如天 ...

  2. PHP 中使用 ElasticSearch 的最佳实践 (下)

    引言 上一篇文章,我们使用同步的方式将数据,同步写入到 ElasticSearch 中.接下来的这篇文章,主要介绍使用 RabbitMQ 的方式,异步的将数据同步到 ElasticSearch . 部 ...

  3. go 通过指针修改结构体小写字段的值

    package main import ( "fmt" "unsafe" ) type W struct { b int32 c int64 } func ma ...

  4. 详解在Linux中同时安装配置并使用 MySQL5.7 和 MySQL8.0

    最近需要使用mysql8.0版本,但是原本的mysql5.7版本已经被多个服务依赖,于是想想能不能同一台服务器装多个版本的mysql,一查确实可行,这里做一个记录方便自己后期回忆 阅读本文前请注意!! ...

  5. xv6 内存管理

    前文讲述了 xv6 的启动过程,本文接着讲述 xv6 内存管理的部分,直接来看. 公众号:Rand_cs 启动部分完善 前文只是介绍了启动的过程,但是各类函数之间的调用,地址的变换,内存布局的变化并没 ...

  6. (十)selenium实现微博高级搜索信息爬取

    1.selenium模拟登陆 2.定位进入高级搜索页面 3.对高级搜索进行定位,设置. 4.代码实现 import time from selenium import webdriver from l ...

  7. css 让页面变灰色

    html { -webkit-filter: grayscale(1); }-webkit-filter(滤镜)有十种效果,分别是:     // grayscale 灰度     // sepia ...

  8. MyBatis的逆向工程详细步骤操作

    1. MyBatis的逆向工程详细步骤操作 @ 目录 1. MyBatis的逆向工程详细步骤操作 2. 逆向工程配置与生成 2.1 MyBatis3Simple:基础版,只有基本的增删改查 2.1.1 ...

  9. python pymysql 数据库查询操作

    import pymysql db= pymysql.connect(host="", user='', database="", password='') c ...

  10. SoftReference 到底在什么时候被回收 ? 如何量化内存不足 ?

    本文基于 OpenJDK17 进行讨论,垃圾回收器为 ZGC. 提示: 为了方便大家索引,特将在上篇文章 <以 ZGC 为例,谈一谈 JVM 是如何实现 Reference 语义的> 中讨 ...