想成为Python高手,必须看这篇爬虫原理介绍! 互联网是由一个个站点和网络设备组成的大网,我们通过浏览器访问站点,站点把HTML、JS、CSS代码返回给浏览器,这些代码经过浏览器解析、渲染,将丰富多彩的网页呈现我们眼前。 一、爬虫是什么? 如果我们把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点,而爬虫就是一只小蜘蛛,沿着网络抓取自己的猎物(数据)爬虫指的是:向网站发起请求,获取资源后分析并提取有用数据的程序。 从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON数据/二进制数据(图片、视频) 爬到本地,进而提取自己需要的数据,存放起来使用; 二、爬虫的基本流程 用户获取网络数据的方式: 方式1:浏览器提交请求--->下载网页代码--->解析成页面 方式2:模拟浏览器发送请求(获取网页代码)->提取有用的数据->存放于数据库或文件中 爬虫要做的就是方式2。 1、发起请求 使用http库向目标站点发起请求,即发送一个Request Request包含:请求头、请求体等 Request模块缺陷:不能执行JS 和CSS 代码 2、获取响应内容 如果服务器能正常响应,则会得到一个Response Response包含:html,json,图片,视频等 3、解析内容 解析html数据:正则表达式(RE模块),第三方解析库如Beautifulsoup,pyquery等 解析json数据:json模块 解析二进制数据:以wb的方式写入文件 4、保存数据 数据库(MySQL,Mongdb、Redis) 文件 三、http协议 请求与响应 Request:用户将自己的信息通过浏览器(socket client)发送给服务器(socket server) Response:服务器接收请求,分析用户发来的请求信息,然后返回数据(返回的数据中可能包含其他链接,如:图片,js,css等) ps:浏览器在接收Response后,会解析其内容来显示给用户,而爬虫程序在模拟浏览器发送请求然后接收Response后,是要提取其中的有用数据。 四、 request 1、请求方式: 常见的请求方式:GET / POST 2、请求的URL url全球统一资源定位符,用来定义互联网上一个唯一的资源 例如:一张图片、一个文件、一段视频都可以用url唯一确定 url编码 https://www.baidu.com/s?wd=图片 图片会被编码(看示例代码) 网页的加载过程是: 加载一个网页,通常都是先加载document文档, 在解析document文档的时候,遇到链接,则针对超链接发起下载图片的请求 3、请求头 User-agent:请求头中如果没有user-agent客户端配置,服务端可能将你当做一个非法用户host; cookies:cookie用来保存登录信息 注意:一般做爬虫都会加上请求头 请求头需要注意的参数: (1)Referrer:访问源至哪里来(一些大型网站,会通过Referrer 做防盗链策略;所有爬虫也要注意模拟) (2)User-Agent:访问的浏览器(要加上否则会被当成爬虫程序) (3)cookie:请求头注意携带 4、请求体 请求体 如果是get方式,请求体没有内容 (get请求的请求体放在 url后面参数中,直接能看到)如果是post方式,请求体是format data ps: 1、登录窗口,文件上传等,信息都会被附加到请求体内 2、登录,输入错误的用户名密码,然后提交,就可以看到post,正确登录后页面通常会跳转,无法捕捉到post 五、 响应Response 1、响应状态码 200:代表成功 301:代表跳转 404:文件不存在 403:无权限访问 502:服务器错误 2、respone header 响应头需要注意的参数: (1)Set-Cookie:BDSVRTM=0; path=/:可能有多个,是来告诉浏览器,把cookie保存下来 (2)Content-Location:服务端响应头中包含Location返回浏览器之后,浏览器就会重新访问另一个页面 3、preview就是网页源代码 JSO数据 如网页html,图片 二进制数据等 六、总结 1、总结爬虫流程: 爬取--->解析--->存储 2、爬虫所需工具: 请求库:requests,selenium(可以驱动浏览器解析渲染CSS和JS,但有性能劣势(有用没用的网页都会加载);) 解析库:正则,beautifulsoup,pyquery 存储库:文件,MySQL,Mongodb,Redis 版权声明:本文为CSDN博主「weixin_45249120」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/weixin_45249120/article/details/94588420
百度图片下载爬虫实战笔记 免责声明:本文所记录的技术手段及实现过程,仅作为爬虫技术学习使用,不对任何人完全或部分地依据本文的全部或部分内容从事的任何事情和因其任何作为或不作为造成的后果承担任何责任。 爬取需求:根据关键字,爬取百度图片并下载到本地; 爬取工具:chrome浏览器、pycharm Python库:request 01 网站结构分析 打开百度首页,输入“美女”进行搜索: 分析页面请求,是通过ajax请求后端请求获取数据: 通过发送ajax请求,获取百度返回的json数据,解析json得到图片链接,下载链接即可; 02 创建爬虫 打开Pycharm开发工具,新建download_image.py,编写如下代码获取图片链接信息: import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36'}def start_html(url): html = requests.get(url, headers = headers) if html.status_code == 200: html.encoding = 'utf8' data_json = html.json()['data'] # 最后一行数据为空,需要去掉 for object_json in data_json[:-1]: print(object_json['middleURL']) else: print('ERROR:', url)if __name__ == '__main__': url = 'https://image.baidu.com/search/acjson?tn=resultjson_com&logid=11293838324117499305&ipn=rj&ct=201326592&is=&fp=result&queryWord=%E7%BE%8E%E5%A5%B3&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&hd=&latest=©right=&word=%E7%BE%8E%E5%A5%B3&s=&se=&tab=&width=&height=& start_html(url)123456789101112131415161718192021 运行代码,能够成功获取图片地址。 03 下载图片 将获取到的图片,下载到本地: def download_image(image_url): image = requests.get(image_url, headers = headers) print('正在下载图片: {}...'.format(image_url)) # 创建文件夹 path = "images" if not os.path.exists(path): os.makedirs(path) # 开始下载图片 with open('images/{}.jpg'.format(uuid.uuid4()), 'wb') as file: for bit_data in image.iter_content(255): file.write(bit_data)12345678910111213 运行代码,图片已经下载到了本地。 04 翻页处理 通过比较翻页的url,发现百度图片是通过【rn】控制行数,【pn】控制起始页,本次仅作为练习使用,所以暂时只爬取前5页: if __name__ == '__main__': for pn in range(30, 151, 30): url = 'https://image.baidu.com/search/acjson?tn=resultjson_com&logid=11293838324117499305&ipn=rj&ct=201326592&is=&fp=result&queryWord=%E7%BE%8E%E5%A5%B3&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&hd=&latest=©right=&word=%E7%BE%8E%E5%A5%B3&s=&se=&tab=&width=&height=&.format(pn) start_html(url)1234 运行代码,成功翻页!
windows下python安装pip 简易教程,具体内容如下 1.前提 你要已经安装了 某个 版本的 python, 下载地址) 安装后,需要配置python.exe 的环境变量,否则在 输入 python指令时,会出现如图错误 配置环境变量 鼠标右键我的电脑 -> 属性 -> 高级系统设置 -> 环境变量 -> 编辑PATH -> 在最后面加上我们的Python安装路径 -> 点击确定 注意:Path 路径最后要加上 分号 ; 例如我的路径 C:\Users\pandap\AppData\Local\Programs\Python\Python36-32; 再在控制台 输入 python 若显示相关信息即表示 配置成功,进如下一步 2.安装 pip 先下载 pip 下载地址 选择 :pip-9.0.1.tar.gz 文件进行下载(版本随意) 下载完成之后,解压到一个文件夹,用CMD控制台进入解压目录,输入: python setup.py install 同样,在安装pip后需先配置环境变量, pip 指令才能生效 找到 python 安装路径下 的 scripts 目录下,复制改路径,例如我的: C:\Users\pandap\AppData\Local\Programs\Python\Python36-32\Scripts 然后添加到环境变量中,注意结尾的分号! 在cmd 下输入 pip 若显示 如图 相关信息,表示安装成功 然后就可以方便的 利用 pip 加在其他工具包了, 例如 输入 pip install pymysql 进行 pymysql安装 successful!! 安装完成! 以上就是本文的全部内容,希望对大家的学习有所帮助。 版权声明:本文为CSDN博主「weixin_39611037」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/weixin_39611037/article/details/110279774
windows下安装python的两种方法,官网下载安装跟Anaconda下载安装教程 首先对比一下两种下载方法 官网下载: 下载的是纯净包,没有安装什么库 Anaconda下载: 安装后会直接安装180多个常用库,建议新手用这个方法安装 2.看下你是32位的系统还是64位的系统 右键我的电脑,属性,然后在系统类型看一下是多少位的操作系统,好像我的就是64位的 3.演示安装 (1)官网下载 下载地址:https://www.python.org/downloads/windows/ 下载最新版本,根据你的系统选择合适的可执行的exe选项 下载完成后直接双击运行就行,记得一定要添加到系统环境,然后点install now就行,然后一直到他完成就行 (2)Anaconda下载安装 下载地址: 官网下载:https://www.anaconda.com/distribution/#download-section 记得要选择32位或者64位的版本 下载完成后直接双击运行,然后一直点下一步就行,重点:一定要添加到系统环境,然后一直点下一步到他安装完成就行 安装到这里就结束。 版权声明:本文为CSDN博主「u010590983」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/u010590983/article/details/89815494
Linux下载安装Python程序的方法汇总 这种方式对于修改参数配置等较灵活;而且可以决定源代码的下载位置,如果要将源码下载到Python文件夹下,则cd到Python文件夹下后使用wget命令即可。下一步需要解压文件: tar -zxvf Python-3.6.2.tgzcd Python-3.6.2 #切换到源代码目录下 ls #查看目录下的文件12 需要配置文件安装的目录 ./configure --prefix=/usr/local/python3.61 运行后,提示我如下内容:(每个人出现的问题可能不同) 只有为什么出现这个问题 If you want a release build with all optimizations active (LTO, PGO, etc), please run ./configure --enable-optimizations.1 按照提示运行即可: ./configure --enable-optimizations1 下一步,编译源文件,生成可执行的二进制文件: make #编译,可能比较慢make install #编译不出错的情况下,执行该行,安装程序。#注意:在这个步骤中,如果之前一直使用的是普通用户的权限,那么在这里一定要转换成root权限才能执行该命令。需要一定的执行时间1234 出现错误:zipimport.ZipImportError: can't decompress data 是因为缺少zlib 的相关工具包导致的,知道了问题所在,那么我们只需要安装相关依赖包即可 打开终端,输入一下命令安装zlib相关依赖包: yum -y install zlib*1 2、进入 python安装包,修改Module路径的setup文件: vim module/setup 1 找到一下一行代码,去掉注释: #zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz 去掉注释 zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz1 另外,在这里说明一下,对于在安装Python安装的过程中遇到这个问题,安装完上面的依赖包后,即可重新进入终端,进入python的安装包路径下执行:1 make && make install 1 现在可以使用Python3.6版本的软件了,输入命令 Python3.6>>> #出现该符号,表示进入Python环境>>>quit() #退出123 如果没有出现上面的情况,原因应该是找不到该目录,通过手动的方式为环境变量添加软链接即可。 ln -s /usr/local/python3.6/bin/python /bin/python1 2.apt-get 安装 该命令适用于deb包管理式的操作系统,典型的OS为ubuntu系统。主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。 该命令需要root权限才能执行,如果不是在root账户下进行操作,则需要临时获取root权限,用到sudo,安装命令为: sudo apt-get install python-numpy #python-numpy为软件包的名称1 其中,numpy为Python中的模块。这种安装方式有默认的安装路径。安装之前可能需要对apt-get进行更新。 sudo apt-get update1 相关命令为: apt-get install xxxx 安装 apt-get remove xxxx 卸载但不删除配置 apt-get purge xxxx 卸载并且删除相关配置 apt-cache search xxxx 寻找xxxx软件,返回一系列能够下载的软件。 这条命令适合当你不知道要下载的具体版本等详细信息时。 apt-get 下载后,软件默认安装路径为:/var/cache/apt/archives dpkg -L +软件包的名字,可以知道这个软件包包含了哪些文件 3.easy_install方法安装Python程序 easy_install是由PEAK(Python Enterprise Application Kit)开发的setuptools包里带的一个命令,所以使用easy_install实际上是在调用setuptools来完成安装模块的工作。 setuptools 最大的优势是它在包管理能力方面的增强。它可以使用一种更加透明的方法来查找、下载并安装依赖包;并可以在一个包的多个版本中自由进行切换,这些版本都安装在同一个系统上;也可以声明对某个包的特定版本的需求;还可以只使用一个简单的命令就能更新到某个包的最新版本。给人印象最为深刻的是,即使有些包的开发人员可能还从未考虑过任何 setuptools 兼容性问题,我们依然可以使用这些包。 要想使用easy_install命令,首先按照之前的方法下载setuptools 。方法如下: cd python wget https://pypi.python.org/packages/d5/b7/e52b7dccd3f91eec858309dcd931c1387bf70b6d458c86a9bfcb50134fbd/setuptools-34.3.3.zip#md5=696941b10b15f0717be957a4d6cfc12e #找到源代码地址并下载在自定义Python目录下 tar -zxvf setuptools34.3.4.zip #解压 cd setuptools34.3.4 #在该文件目录下有easy_install命令,也有setup.py文件12 接下来就要安装setuptools工具,使用python3.6可执行命令(也可以是python等其他的可执行命令)进行安装。 python3.6 setup.py build #先进行编译python3.6 setup.py install #安装12 默认安装目录为:/usr/local/pyhton/Lib/python3.6/site-packages/setuptools-* ls /usr/local/python/bin/ #执行该命令后,发现easy_install在该文件夹下,需要添加软链接使得环境变量可以找到该命令。ln -s /usr/local/python/bin/easy_install /bin/easy_install-3.6 #防止与其他版本的命令冲突,可以添加版本号12 接下来就可以使用该命令下载软件包了 easy_install-3.6 django #django是爬虫框架1 如果使用的是easy_install-3.6命令下载的软件,会把该软件安装在python3.6下的site-packages目录中.也就是不同python版本的easy_install会默认指定不同的安装目录。与easy_install的安装目录有关。 注意:easy_install工具不是万能的,有时候安装一个库时会缺少其他的底层依赖库,导致失败。遇到这种情况,就需要使用使用第一种方法来手动安装程序包了。 4.pip安装工具 安装pip工具有很多种方法,如下: 第一种: sudo apt-get install python-pip1 此方法一般不会安装最新版本的pip工具,需要升级。 第二种: 要安装或升级pip,需要下载 get-pip.py. 地址:https://bootstrap.pypa.io/get-pip.py 然后运行以下命令 (需要管理员权限): # python get-pip.py1 第三种:下载源码后,解压缩,安装 wget http://****tar -zxvf ***.tgz cd ***python setup.py build python setup.py install12345 使用pip安装程序的方法 sudo pip install numpy pip --help #查看其它使用方法12 此种方法的默认安装路径:当前版本python的目录bin下
陕公网安备 61012502000223号
©www.gaoxuejun173.top