技术文章:[Python]爬虫技术:(JavaScript渲染)动态页面抓取超级指南

优采云 发布时间: 2022-09-21 23:07

  技术文章:[Python]爬虫技术:(JavaScript渲染)动态页面抓取超级指南

  点击上方“Dataartisan Data Artisan”订阅!

  当我们进行网络爬取时,我们会使用一定的规则从返回的 HTML 数据中提取有效信息。但是如果网页收录 JavaScript 代码,我们必须渲染它以获取原创数据。在这一点上,如果我们仍然以通常的方式从中抓取数据,我们将一无所获。浏览器知道如何处理这段代码并显示出来,但是我们的程序应该如何处理这段代码呢?接下来,我将介绍一种简单粗暴的方法来抓取收录 JavaScript 代码的网页信息。大多数人使用 lxml 和 BeautifulSoup 这两个包来提取数据。在这篇文章中我不会涉及任何爬虫框架的内容,因为我只使用了最基本的 lxml 包来处理数据。你可能想知道为什么我更喜欢 lxml。那' s 因为lxml使用元素遍历来处理数据,而不是像BeautifulSoup那样使用正则表达式来提取数据。在这篇文章中我要介绍一个非常有趣的案例——突然发现我的文章出现在最近的Pycoders周刊147上,所以我想爬取Pycoders周刊中所有档案的链接。

  显然,这是一个带有 JavaScript 渲染的网页。我想抓取网页中的所有*敏*感*词*信息和相应的链接信息。那么我该怎么办呢?首先,我们无法通过 HTTP 方法获取任何信息。

  import requests<br />from lxml import html<br /># storing responsere<br />sponse = requests.get(&#39;http://pycoders.com/archive&#39;)<br /># creating lxml tree from response body<br />tree = html.fromstring(response.text)<br /># Finding all anchor tags in response<br />print tree.xpath(&#39;//div[@class="campaign"]/a/@href&#39;)

  当我们运行上述代码时,我们无法获得任何信息。这怎么可能?网页清楚地显示了这么多文件的信息。接下来我们需要考虑如何解决这个问题?如何获取内容信息?接下来我将展示如何使用 Web 工具包从 JS 渲染的网页中获取数据。什么是网络套件?Web 工具包可以做任何浏览器可以处理的事情。对于某些浏览器,Web kit 是底层的网页渲染工具。Web kit 是 QT 库的一部分,所以如果你已经安装了 QT 和 PyQT4 库,你可以直接运行它。您可以使用命令行安装存储库:

  

  sudo apt-get install python-qt4

  现在所有的准备工作都完成了,我们将使用一种全新的方法来提取信息。解决方案我们先通过Web kit发送请求信息,然后等待页面完全加载完毕再赋值给一个变量。接下来我们使用 lxml 从 HTML 数据中提取有效信息。这个过程需要一点时间,但您会惊讶地看到整个页面加载完毕。

  import sys<br />from PyQt4.QtGui import *<br />from PyQt4.Qtcore import *<br />from PyQt4.QtWebKit import *<br /><br />class Render(QWebPage):<br />    def __init__(self, url):<br />        self.app = QApplication(sys.argv) <br />        QWebPage.__init__(self)        <br />        self.loadFinished.connect(self._loadFinished) <br />        self.mainFrame().load(QUrl(url))        <br />        self.app.exec_()        <br />   def _loadFinished(self, result):        <br />    self.frame = self.mainFrame()        <br />    self.app.quit()

  Render 类可用于渲染网页。当我们创建一个新的 Render 类时,它可以加载 url 中的所有信息并将其存储在一个新的框架中。

  url = &#39;http://pycoders.com/archive/&#39;<br /># This does the magic.Loads everything<br />r = Render(url)<br /># Result is a QString.<br />result = r.frame.toHtml()

  使用上面的代码,我们将 HTML 结果存储在变量 result 中。由于lxml不能直接处理这种特殊的字符串数据,我们需要转换数据格式。

  # QString should be converted to string before processed by lxml<br />formatted_result = str(result.toAscii())<br /># Next build lxml tree from formatted_result<br />tree = html.fromstring(formatted_result)<br /># Now using correct Xpath we are fetching URL of archives<br />archive_links = tree.xpath(&#39;//div[@class="campaign"]/a/@href&#39;)<br />print archive_links

  

  使用上面的代码,我们可以得到所有的文件链接信息,然后我们可以使用这些Render和这些URL链接来提取文本内容信息。Web kit 提供了一个强大的网页渲染工具,我们可以使用这个工具从 JS 渲染的网页中抓取有效的信息。

  在本文中,我介绍了一种从 JS 渲染的网页中获取信息的有效方法。虽然这个工具比较慢,但是非常简单粗暴。我希望你会喜欢这个文章。现在您可以将此方法应用于您发现难以处理的任何网页。愿一切顺利。

  原文链接:原作者:Naren Aryan 译者:fibears

  操作细节:网站后台管理系统操作指南

  网站后台管理系统操作指南V30网站后台管理系统操作指南网络营销服务中心NITCCC 一系统操作环境3 二操作系统概述3 三栏管理模块操作71 栏目列表72 新增栏目11 四个产品模块操作 111 添加产品 11 标题标签 关键词标签 描述 标签描述 122 产品列表 143 产品批量上传 144 添加分类 155 分类列表 15 五首页广告模块操作 161 添加广告 172 广告列表 17 六个友情链接模块操作 171 添加链接 172 链接列表 18 七个权限管理模块操作 181 添加管理员 182 管理员列表 193 修改我的密码 20 八个 网站管理模块操作 201网站 设置 202 语言管理 233 主题管理 244 电子邮件模板 245 数据库备份 256数据库优化 25 一系统运行环境 PHP运行环境 Linux op操作系统 PHP5 或以上 Mysql 数据库 ZendOptimizer 328 NET 操作环境 Windows 操作系统 net35 或以上 Mssql 数据库技术支持 两种操作系统概述 福利类型 网站第一品牌 一切为了福利 感谢您使用 Benefit 30网站后台管理系统 图2-01 用户名和密码如图2-01 用户输入用户名和密码后,鼠标左键点击确定进入系统 如果用户忘记密码,点击此处取回,进入取回密码页面,提交用户名和邮箱即可取回密码。前提是系统已经配置了邮件转发功能,并且需要管理员邮箱。图2-02 图2-02 用户登录后的窗口。操作系统界面界面框架主要由头部左右主窗口三部分组成。 1.头部由NITC LOGO和三组按键组成。第一组走到前端,点击打开。然后去前台浏览效果并清除缓存。该功能主要是清除服务器上的缓存。空网站临时文件帮助是福利类网站后台管理系统操作指南退出是福利类网站后台管理系统第二组a刷新主窗口按钮b返回后台综合页面位置c 这是网站后台管理导航,除了产品展示类,完全对应前端导航栏包括子栏目,为用户提供直接、清晰、方便快捷operation 上述所有列均为系统默认列。点击按钮管理相应导航栏的内容。 d。管理更多导航栏。用户可以控制添加或修改导航栏的名称以及是否显示。仍然可以管理导航栏。第三组内容在后台提交或修改了任何数据。如果想在前台看到相应的变化,需要点击这个按钮发布。如图2-03所示,点击Generate Marketing Page按钮,新更新的页面会生成一个note。专供福利类型网站后台管理添加、编辑、删除、排序等操作。只有点击前台生成营销页面后才会生效。这是福利类型的一大特点网站 图2-03 静态网页更新 福利网站搜索引擎优化是对细节的优化。同理网站为什么有的内容排名好,有的排名差。这是因为网站如何做出成功或失败的细节网站网站排名更好网站权重更高。你不妨从网页的基础开始。让网页静态化是您不会后悔的选择。网站静态化有什么好处? @>静态的好处是提高静态网页的速度。众所周知,aspphpjspnet等动态程序需要读取并调用数据库内容来显示数据。相对于流量,数据库读取次数增加,服务器资源被占用。影响网站的速度,使用网站做静态,直接去掉读数据库的操作,减少链接,提高响应速度网站第二个静态基于web的搜索引擎是从网站@ >优化分析的。搜索引擎更喜欢静态网页。与动态网页相比,搜索引擎更喜欢静态网页,这样更容易爬取。搜索引擎SEO排名更容易提高。阿里巴巴、百度、慧聪等页面大多采用静态或伪静态网页展示,更方便搜索引擎抓取和排名。 3、静态网页稳定网站1 从安全角度来看,静态网页除了开源程序外,不容易被黑客攻击。使用开源cms如果黑客不知道你的网站后端网站使用程序数据库的地址静态网页不易被黑客攻击2From网站稳定性据说如果程序数据库有问题,会直接影响网站的访问,而静态网页会避免这种情况,不会因为程序等而丢失。 信任级别2主功能模块左侧操作按钮网站栏目导航栏目添加栏目栏目管理产品管理产品中心添加产品产品列表产品批量上传添加分类分类列表首页广告添加广告广告管理友好链接添加链接链接列表权限管理添加管理员管理员列表修改我的密码网站管理网站设置语言管理主题管理生成全站邮件模板数据库备份数据库优化图2-04是登录后的综合页面a是用户友好的提示和日期b用户第一次使用向导使用NITC福利类型网站后台操作系统可以根据用户向导一步步进行相关操作,最终生成您的网站c客户咨询信息和产品统计 dNITC官方广告*敏*感*词*及版权声明 图2-04 三栏管理模块操作1栏目列表 福利类型网站特色模块 除了产品展示,前台和后台栏目完全对应前端展示栏目内容 后台管理栏目内容旨在为客户提供方便易懂的操作方法 在栏目列表中,用户可以单独展示分类,添加、编辑栏目内容、优化、设置、删除等。目前NITC30版本的栏目管理共有三种栏目。系统列是 NITC30 默认定义的列,不能删除。如果操作不想在前端导航显示,用户可以点击相应栏的显示,将隐藏的系统栏分为首页公司介绍产品展示新闻在线咨询联系我们首页公司介绍产品展示新闻在

  

<p>在线咨询咨询列表 在咨询列表页面,用户可以查看删除或转发咨询信息的操作。会诊统计 在会诊统计页面,用户可以查看当年度月度会诊统计图和饼图。查询次数的饼图是各个地区查询的比例。联系我们 b文章列表用户在添加栏目时可以选择栏目类型文章列表的显示方式与新闻列表相同 c单页用户添加栏目时,栏目类型可以选择单页,单页显示方式和关于我们的显示方式一样。 2列添加一列添加注意当前NITCV30版本的列目录级别为二级列类型为文章单页列表四产品模块操作图4-011添加产品图4 -01 在添加产品页面填写相应信息并提交。请注意,以下项目是确保信息完整性的必需项目。添加多语言版本时,添加一种语言信息后会添加其他语言版本。信息还要尽量填写 允许的产品图片后缀格式 pdf格式 备注格式 下载页码格式 下载演示格式 下载文档格式 下载文件后缀 GIFJPG PNG 所有界面中的标志代表语言版本 所有界面中的代表都有一个鼠标悬停时提示。在前台显示内容会出现的位置,主要是为了方便用户明确添加以后会出现的内容的位置 Title label 关键词 label Description label description 下图显示了相关标签显示在搜索引擎。这里,titleKeywordsDescription等标签将在系统中详细说明其他优化设置同理。如何编写标题标签 网页优化中最重要的因素之一就是网页的标题标签。 TitleTag 在编写标题标签时通常会考虑以下因素。 1.所有网页都应该有自己的有很多独特的TitleTags网站犯了一个很初级的错误,就是所有页面都使用相同的标题,比如欢迎访问公司。事实上,虽然每个页面都属于同一个网站,但肯定会是他们在谈论不同的东西,可能是你的产品,也可能是你的服务。不同的网页必须为这个网页的具体内容写一个标题标签。 2 当您的网页被搜索引擎搜索时,标题标签应该对用户足够有吸引力。列出时,页面的标题来自标题标签。当用户决定点击哪个网站时,很大程度上取决于你的标题是怎么写的,对用户来说是否足够吸引人。如果你的标签只是一堆没有意义的关键词即使你的顶级用户不点击也没用3标题标签应该收录关键词这个关键词应该be for this page 而不是你的整个 网站,例如,这篇文章谈论的是标题标签。标题自然收录标题标签而不是我的整个网站待优化关键词同时虚拟主机关键词应该自然地融入到一个逻辑连贯的句子中而不是一个生硬的 关键词stacking 4 通常搜索引擎只考虑标题标签中有限数量的单词,例如前十到十五个单词,所以一个长满 关键词 的标题标签只会让你的 网站@ > 看起来更像垃圾。搜索引擎排名技术的改进 关键词只要你的标题标签不太长,它是在前面还是后面并不重要 5 尝试在标题标签中提及你的品牌或 网站可能的@>Name 当然,品牌或网站Name 与关键词 相比应该是次要的。例如,我通常在写网页时像这样构造标题标签文章Name –分类名称——网站如果名字太长,就用名字文章——网站如果名字太长,就用名字文章如何选择关键字 tagKeyword 标签是用来描述一个网页的属性,但是要列出的内容是 关键词这意味着根据页面的主题和内容选择合适的关键词除了考虑核心内容选择关键词时的页面,也应该便于用户通过搜索引擎检索。注 1. 使用半角逗号分隔不同的关键词。不要使用空格或英文输入状态下的空格。 2.关键字不是关键字。短语而不是段落 关键字标签曾经是搜索引擎排名中非常重要的因素,但现在它们已被许多搜索引擎完全忽略。如果我们添加这个标签,它不会损害页面的整体性能,但如果使用不当,则不会影响页面。不仅没有好处,还有诈骗的嫌疑。在使用关键词标签关键词时,要注意以下几点 1、关键词标签的内容要与页面的核心内容相关。确保使用的 关键词 出现在页面文本中。 2、用户使用方便。搜索引擎检索到的关键词太少,不适合META标签中的关键词 3 不要重复使用关键词 否则可能会被搜索引擎惩罚 4

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线