python爬虫技术 动态页面抓取超级指南_光环大数据Python培训
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
python爬虫技术:动态页面抓取超级指南_光环大数据Python培训
当我们进行网页爬虫时,我们会利用一定的规则从返回的 HTML 数据中提取出有效的信息。
但是如果网页中含有 JavaScript 代码,我们必须经过渲染处理才能获得原始数据。
此时,如果我们仍采用常规方法从中抓取数据,那么我们将一无所获。
浏览器知道如何处理这些代码并将其展现出来,但是我们的程序该如何处理这些代码呢?接下来,我将介绍一个简单粗暴的方法来抓取含有JavaScript 代码的网页信息。
大多数人利用lxml和BeautifulSoup这两个包来提取数据。
本文中我将不会介绍任何爬虫框架的内容,因为我只利用最基础的lxml包来处理数据。
也许你们会好奇为啥我更喜欢lxml。
那是因为lxml利用元素遍历法来处理数据而不是像BeautifulSoup一样利用正则表达式来提取数据。
本文中我将介绍一个非常有趣的案例——之前我突然发现我的文章出现在最近的 Pycoders weekly issue 147中,因此我想爬取 Pycoders weekly 中所有档案的链接。
很明显,这是一个含有 JavaScript 渲染的网页。
我想要抓取网页中所有的档案信息和相应的链接信息。
那么我该怎么处理呢?首先,我们利用 HTTP 方法无法获得任何信息。
import requestsfrom lxml import html# storing responseresponse = requests.get('/archive')# creating lxml tree from response bodytree = html.fromstring(response.text)# Finding all anchor tags in responseprint tree.xpath('//div[@class="campaign"]/a/@href')
当我们运行上述代码时,我们无法获得任何信息。
这怎么可能呢?网页中明明显示那么多档案的信息。
接下来我们需要考虑如何解决这个问题?
如何获取内容信息?
接下来我将介绍如何利用 Web kit 从 JS 渲染网页中获取数据。
什么是
Web kit呢?Web kit 可以实现浏览器所能处理的任何事情。
对于某些浏览器来
说,Web kit就是其底层的网页渲染工具。
Web kit 是QT库的一部分,因此如
果你已经安装QT和PyQT4库,那么你可以直接运行之。
你可以利用命令行来安装该软件库:
sudo apt-get install python-qt4
现在所有的准备工作已经完成,接下来我们将使用一个全新的方法来提取信
息。
解决方案
我们首先通过 Web kit 发送请求信息,然后等待网页被完全加载后将其赋
值到某个变量中。
接下来我们利用lxml从 HTML 数据中提取出有效的信息。
这
个过程需要一点时间,不过你会惊奇地发现整个网页被完整地加载下来了。
import sysfrom PyQt4.QtGui import *from PyQt4.Qtcore import *from
PyQt4.QtWebKit import *class Render(QWebPage): def __init__(self,
url): self.app = QApplication(sys.argv) QWebPage.__init__(self)
self.loadFinished.connect(self._loadFinished)
self.mainFrame().load(QUrl(url)) self.app.exec_() def _loadFinished(self, result): self.frame =
self.mainFrame() self.app.quit()
类Render可以用来渲染网页,当我们新建一个Render类时,它可以将url
中的所有信息加载下来并存到一个新的框架中。
url = '/archive/'# This does the magic.Loads
everythingr = Render(url)# Result is a QString.result = r.frame.toHtml()
利用以上的代码我们将 HTML 结果储存到变量result中,由于lxml无法直接处理该特殊的字符串数据,因此我们需要转换数据格式。
# QString should be converted to string before processed by lxmlformatted_result = str(result.toAscii())# Next build lxml tree from formatted_resulttree = html.fromstring(formatted_result)# Now using correct Xpath we are fetching URL of archivesarchive_links = tree.xpath('//div[@class="campaign"]/a/@href')print archive_links
利用上述代码我们可以获得所有的档案链接信息,接下来我们可以利用这些Render和这些URL链接来提取文本内容信息。
Web kit 提供了一个强大的网页渲染工具,我们可以利用这个工具从 JS 渲染的网页中抓取出有效的信息。
本文中我介绍了一个如何从 JS 渲染的网页中抓取信息的有效方法,这个工具虽然速度比较慢,但是却非常简单粗暴。
我希望你会喜欢这篇文章。
现在你可以将该方法运用到任何你觉得难以处理的网页中。
祝一切顺利。
为什么大家选择光环大数据!
大数据培训、人工智能培训、Python培训、大数据培训机构、大数据培训班、
数据分析培训、大数据可视化培训,就选光环大数据!光环大数据,聘请大数据领域具有多年经验的讲师,提高教学的整体质量与教学水准。
讲师团及时掌握时代的技术,将时新的技能融入教学中,让学生所学知识顺应时代所需。
通过深入浅出、通俗易懂的教学方式,指导学生较快的掌握技能知识,帮助莘莘学子实现就业梦想。
光环大数据启动了推进人工智能人才发展的“AI智客计划”。
光环大数据专注国内大数据和人工智能培训,将在人工智能和大数据领域深度合作。
未来三年,光环大数据将联合国内百所大学,通过“AI智客计划”,共同推动人工智能产业人才生态建设,培养和认证5-10万名AI大数据领域的人才。
参加“AI智客计划”,享2000元助学金!
【报名方式、详情咨询】
光环大数据网站报名:
手机报名链接:http:// /mobile/。