目录
1.简单爬虫
实验背景
少数可怕的时候,我没有 Wi-Fi。这时才意识到,我在计算机上所做的事,有多少实际上是在因特网上做的事。完全出于习惯,我会发现自己尝试收邮件、阅读朋友的推特,或回答问题:“在Kurtwood Smith演出 1987 年的机械战警之前,曾经演过主角吗?”
因为计算机上如此多的工作都与因特网有关,所以如果程序能上网就太好了。“Web 抓取”是一个术语,即利用程序下载并处理来自 Web 的内容。例如,Google 运行了许多 web 抓取程序,对网页进行索引,实现它的搜索引擎。在本章中,你将学习几个模块,让在 Python 中抓取网页变得很容易。
推荐第三方库
urlib库:爬虫之祖,用于网络请求,网络异常处理等模块
requests:Python中一个第三方库,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。
Beautiful Soup:用于解析HTML文本,提取特定节点或者属性内容
lxml:python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高
实验步骤
-
选择一个你喜欢的网页,使用python第三方库对其发起请求
-
获取网页返回的内容,并从中抽取出你所感兴趣的内容
-
利用上一章读写文件的知识,将你抽取到的内容保存到本地主机
参考代码
from urllib import request url = 'https://www.baidu.com' # 模拟浏览器去爬取内容,主要是为了被反扒 headers = {'user-agent':' Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'} try: # 一、使用urllib库爬取目标网页,获取网页本文 rep = request.Request(url=self.target_url, headers=self.headers) resp = request.urlopen(rep) html_text = resp.read() # 二、提取网页内容 soup = BeautifulSoup(html_text, 'lxml') print(soup.head) # html head print(soup.head.string) except urllib.error.URLError as e: if isinstance(e.reason, socket.timeout): print('请求超时')
2.模拟用户操作
实验背景
selenium是网页自动化测试工具,非常适合用于完成网页自动点击以及网络爬虫等。selenium功能框架底层使用JavaScript模拟真实用户对浏览器进行操作。测试脚本执行时,浏览器自动按照脚本代码做出点击,输入,打开,验证等操作,就像真实用户所做的一样,从终端用户的角度测试应用程序,十分适合于网络爬虫。
推荐资料:
Selenium简介:Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。
XPATH:XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。
实验步骤
-
选择一个你喜欢的网页,使用Selenium库对其发起请求
-
通过XPATH或者其他选择器,定位并抽取出你所感兴趣的内容
-
利用上一章读写文件的知识,将你抽取到的内容保存到本地主机
实验结果