当前位置: 首页 > news >正文

不属于网站后期维护网站商品图片尺寸

不属于网站后期维护,网站商品图片尺寸,教育网页设计模板,网站地图怎么使用在上一篇文章中#xff0c;我们了解了爬虫的原理以及要实现爬虫的三个主要步骤#xff1a;下载网页-分析网页-保存数据。 下面#xff0c;我们就来看一下#xff1a;如何使用Python下载网页。 1、网页是什么#xff1f; 浏览器画网页的流程#xff0c;是浏览器将用户输…在上一篇文章中我们了解了爬虫的原理以及要实现爬虫的三个主要步骤下载网页-分析网页-保存数据。 下面我们就来看一下如何使用Python下载网页。 1、网页是什么 浏览器画网页的流程是浏览器将用户输入的网址告诉网站的服务器然后网站的服务器将网址对应的网页返回给浏览器由浏览器将网页画出来。 这里所说的网页一般都是一个后缀名为 html 的文件。 网页文件和我们平时打交道的文件没什么不同平时我们知道 Word 文件后缀名为 .doc 通过 Word 可以打开。图片文件后缀名为 .jpg通过 Photoshop 可以打开而网页则是后缀名为 .html通过浏览器可以打开的文件。 网页文件本质也是一种文本文件为了能够让文字和图片呈现各种各样不同的样式网页文件通过一种叫作 HTML 语法的标记规则对原始文本进行了标记。 1手动下载网页 我们以煎蛋网为例体会一下网页的实质使用浏览器打开这个链接http://jandan.net/可以看到如下界面。可以看到第一条新闻的标题前缀是今日好价。网页内容可能会随时间变化这里你只需要注意第一条新闻的前几个字暗号即可下同。 在空白区域点击右键另存为并在保存类型中选择仅 HTML。 接下来回到桌面可以看到网页已经被保存到桌面了后缀名是 html这个就是我们所说的网页文件。 2网页内容初探 我们右键刚下载的文件选择用 VS Code 打开打开后的文件内容如下图所示。 这就是网页文件的实际内容未被浏览器画出来之前。现在先不用管看不懂的代码还记得我们看到的第一条新闻吗“今日好价………………”。你的暗号 我们在 VS Code 中通过 CTRL F 调出搜索面板搜索“今日好价”暗号。可以看到成功找到了这条新闻虽然被很多不认识的代码包围但这也可以确定我们看到的煎蛋网的主页确实就是这个 html 文件。 2、如何实现下载普通网页 Python 以系统类的形式提供了下载网页的功能放在 urllib3 这个模块中。这里面有比较多的类我们并不需要逐一都用一遍只需要记住主要的用法即可。 1获取网页内容 还是以煎蛋网为例。在我们打开这个网页的时候排在第一的新闻是“天文学家首次见证黑洞诞生”。 煎蛋又更新了新的新闻你记住你当时的第一条新闻题目即可。我们待会儿会在我们下载的网页中搜索这个标题来验证我们下载的正确性。 下面开始打开vscode输入如下代码 # 导入 urllib3 模块的所有类与对象import urllib3# 将要下载的网址保存在 url 变量中英文一般用 url 表示网址的意思url http://jandan.net/p/date/2021/03/23# 创建一个 PoolManager 对象命名为 httphttp urllib3.PoolManager()# 调用 http 对象的 request 方法第一个参数传一个字符串 GET# 第二个参数则是要下载的网址也就是我们的 url 变量# request 方法会返回一个 HTTPResponse 类的对象我们命名为 responseresponse http.request(GET, url)# 获取 response 对象的 data 属性存储在变量 response_data 中response_data response.data# 调用 response_data 对象的 decode 方法获得网页的内容存储在 html_content # 变量中html_content response_data.decode()# 打印 html_contentprint(html_content) 上述代码就完成了一个完成的网页下载的功能。其中有几个额外要注意的点 我们创建 PoolManager的时候写的是 urllib3.PoolManager这里是因为我们导入了 urllib3 的所有类与函数。所以在调用这个模块的所有函数和类的前面都需要加模块名并用点符号连接。response 对象的 data 属性也是一个对象是一个 bytes 类型的对象。通过调用 decode 方法可以转化成我们熟悉的字符串。 执行上述代码可以看到打印出了非常多的内容而且很像我们第一部分手动保存的网页这说明目前 html_content 变量中保存的就是我们要下载的网页内容。 2将网页保存到文件 现在 html_content 已经是我们想要的网页内容对于完成下载只差最后一步就是将其保存成文件。其实这一步已经和保存网页无关的而是我们如何把一个字符串保存成一个文件。 Python 中读取文件和保存文件都是通过文件对象来完成的。接下来我们通过实际的例子来了解这个技术。 新建 Cell输入以下代码 # 调用 open 函数三个参数都是字符串类型第一个参数为要操作的文件名# 第二个参数代表模式w 表示写入文件r 表示读取文件# 第三个参数表示编码格式一般有中文的认准 utf-8 就好# open 函数返回一个文件对象我们存储在 fo 变量中fo  open(jiandan.html,w, encodingutf-8)# 调用文件对象的 write 方法将我们上面存储着网页内容的字符春变量html_content # 作为参数fo.write(html_content)# 关闭文件对象fo.close() 执行完上述代码后可以在 VS Code 的左侧边栏中看到文件夹下多了一个 jiandan.html 的文件这个就是我们用刚才 Python 代码保存的文件。 打开就可以看到熟悉的网页内容了。 3让我们的代码更加通用 刚才我们在两个 cell 中分别实现了将网页保存成一个字符串以及将字符串保存为一个文件。如果我们要抓取新的网页要么直接修改之前的代码要么就需要拷贝一份代码出来。 这两种方式都不是很好基于我们之前了解的内容对于有一定通用度的代码我们可以将其改写为函数来方便后续使用。 改写之后的代码如下 # 第一个函数用来下载网页返回网页内容# 参数 url 代表所要下载的网页网址。# 整体代码和之前类似def download_content(url):http  urllib3.PoolManager()response  http.request(GET, url)response_data  response.datahtml_content  response_data.decode()return html_content# 第二个函数将字符串内容保存到文件中# 第一个参数为所要保存的文件名第二个参数为要保存的字符串内容的变量def save_to_file(filename, content):fo  open(filename,w, encodingutf-8)fo.write(content)fo.close()url  http://jandan.net/# 调用 download_content 函数传入 url并将返回值存储在html_content # 变量中html_content  download_content(url)# 调用 save_to_file 函数文件名指定为 jiandan.html, 然后将上一步获得的# html_content 变量作为第二个参数传入save_to_file(jiandan.html, html_content) 这样改写之后我们在抓取新的网页的时候就可以使用 download_content 函数和 save_to_file 函数快速完成了不再需要去写里面复杂的实现。 3、如何实现动态网页下载 urllib3 很强大但是却不能一劳永逸地解决网页下载问题。对于煎蛋这类普通网页urllib3 可以表现更好但是有一种类型的网页它的数据是动态加载的就是先出现网页然后延迟加载的数据那 urllib3 可能就有点力不从心了。 我们以豆瓣的电视剧网页为例 现在我们来使用刚才定义的两个函数来下载一下这个网页。 url  https://movie.douban.com/tvhtml_content  download_content(url)save_to_file(douban_tv.html, html_content) 代码很简单就是把豆瓣电视剧的网页下载到 douban_tv.html 这个文件中。执行代码可以在 VS Code 左边的文件夹视图中看到成功生成了douban_tv.html 这个文件这说明网页已经下载成功。 现在我们在 VS Code 中打开这个网页搜索上图中出现的电视剧“山河令”。这次却神奇的搜不到了事实上你会发现我们在网页看到的电视剧名字都搜不到。 为什么我们明明下载到了网页但是却搜不到电视剧呢造成这个现象的原因是豆瓣电视剧网页中的电视剧列表的部分是动态加载的所以我们用 urllib3 去直接下载只能下载到一个壳网页没有里面的列表内容。这种网页内部的数据是动态加载的网页我们统一称之为动态网页。 动态网页应该怎么抓取呢回过头去想一个网页不管再怎么动态最终都是要展示给用户看的所以浏览器应该是最知道网页内容是什么的角色。如果我们可以使用代码控制浏览器来帮我们下载网页应该就可以解决动态网页的抓取问题。 接下来我们就介绍使用 Python 来控制浏览器的利器selenium。 1安装selenium selenium 不属于 Python 的系统库所以要使用这个库需要先进行安装。 我们安装 Python 的库一般通过 Anaconda 的命令行。既然是模拟浏览器我们的电脑首先要先有浏览器。这里我们以 Chrome 为例。所以在一切开始之前你需要确保你电脑上安装了 Chrome。 在准备环节我们已经安装了 Anaconda 套件现在我们去开始菜单或者在桌面状态下按 Win 键找到 Anaconda 3 文件夹并点击文件夹中的 Anaconda Prompt 程序。Mac 用终端即可。 打开后会出现一个命令行窗口在这个命令行我们可以输入 conda install xxx 来安装 Python 的扩展库。 比如在这个例子中我们输入 conda install selenium回车。界面会变得如下所示询问我们是否要确认安装输入 y 继续回车就可以。 安装完毕后命令行窗口会回到待输入命令的状态此时就可以关闭了。 回到 VS Code新建 Cell输入以下的测试代码 # 从 selenium 库中导入 webdriver 类from selenium import webdriver# 创建一个 Chrome 浏览器的对象brow  webdriver.Chrome()# 使用 Chrome 对象打开 url(就是刚才豆瓣电视剧的 url)brow.get(url) 运行代码会自动打开一个 Chrome 浏览器的窗口并展示 url 对应的网页。同时还会有一个提示说明这个浏览器窗口是在被程序控制的如下图所示。 如果代码运行出错提示找不到 chromedriver。那说明你安装的 selenium 版本缺少 chromedriver, 可以按如下方式操作 重新按照刚才的方法打开 Anaconda Prompt输入 pip install --upgrade --force-reinstall chromedriver-binary-auto 回车执行安装。在上面的代码增加一行 import chromedriver_binary 添加完毕后如下所示。 # 从 selenium 库中导入 webdriver 类from selenium import webdriver# 导入 chromedriverimport chromedriver_binary# 创建一个 Chrome 浏览器的对象brow webdriver.Chrome()# 使用 Chrome 对象打开 url(就是刚才豆瓣电视剧的 url)brow.get(url) 2使用selenium下载动态网页 如果刚才的代码已经运行成功并打开了 Chrome 的界面的话那我们离最后的下载动态网页已经不远了。在我们通过 Chrome 对象打开了一个网页之后只需要访问 Chrome 对象的 page_source 属性即可拿到网页的内容。 代码如下 # 从 selenium 库中导入 webdriver 类from selenium import webdriver# 创建一个 Chrome 浏览器的对象brow webdriver.Chrome()# 使用 Chrome 对象打开 url(就是刚才豆瓣电视剧的 url)brow.get(url)# 访问 Chrome 对象的 page_source 属性并存储在 html_content 变量中html_content  brow.page_source# 调用我们之前定义的 save_to_file 函数这次我们保存为 double_tv1.html# 要保存的内容就是 html_contentsave_to_file(douban_tv1.html, html_content) 运行代码可以看到 Chrome 被打开并加载网页等电视剧列表都加载完之后在 VS Code 中可以看到 double_tv1.html 也被成功创建。 这个时候我们去这个文件搜索山河令发现已经有结果了在这个 html 文件中已经有了所有电视剧的信息。 至此我们也实现了对于动态内容网页的下载功能。
http://www.zqtcl.cn/news/906939/

相关文章:

  • 北京哪个网站建设最好怀化网站建设公司
  • 做类似猪八戒网的网站注册一个商标多少钱
  • 怎么提高网站访问速度wordpress怎么备份按在
  • 淘宝网站是谁做的好处wordpress商业授权
  • 淘宝客网站怎么批量采集淘宝商品方维采集淘宝数据思路珠宝类网站建设
  • 重庆网站关键字优化雅布设计中国分公司在哪里
  • 山西做网站费用温州做网站制作
  • 购买域名后 可以做网站么苏州市建设厅网站
  • 网站域名如何查询win7优化配置的方法
  • 免费建网站的服务器佛山城市建设工程有限公司
  • 安溪人做的网站wordpress 单页面 主题
  • 品牌型网站设计创意 国外 网站
  • o2o网站建设包括哪些平面设计作品欣赏
  • 万齐网站建设成都旅游攻略自由行攻略地图
  • 新网做网站流程app下载汅api未满入内
  • 邓州网站建设建设摩托车价格大全
  • 关闭网站怎么不保存我做的更改软件工程师英文
  • 垦利网站定制提供哈尔滨网站建设服务
  • 谷歌在线浏览器入口seo内容优化是什么意思
  • 新闻门户网站免费建设西安做企业网站哪家做的好
  • 湘潭网站建设 w磐石网络安徽省工程建设信息网官方网站
  • 移动端网站开发教程局网站建设工作征求意见
  • 浙江网站建设公司地址南京做电商网站的公司
  • 网上销售型的企业网站建行个人手机银行
  • 网站建设与规划方案书网站建设策划有哪些
  • 手机网站建设推广方案ppt模板单页企业官网模板
  • 荥阳网站建设多少钱长沙企业关键词优化哪家好
  • 网站购物流程模块怎么实现最新足球赛事
  • 网站建设后需要维护吗网站规划的案例
  • 北京造价员变更在哪个网站做免费域名申请入口