网页设计与网站开发课程设计,wap手机网站建设,网站网页设计师,wordpress数字主题在各大编程语言中#xff0c;初学者要学会编写的第一个简单程序一般就是“Hello, World!”#xff0c;即通过程序来在屏幕上输出一行“Hello, World!”这样的文字#xff0c;在Python中#xff0c;只需一行代码就可以做到。我们把这第一个爬虫就称之为“HelloSpider”…在各大编程语言中初学者要学会编写的第一个简单程序一般就是“Hello, World!”即通过程序来在屏幕上输出一行“Hello, World!”这样的文字在Python中只需一行代码就可以做到。我们把这第一个爬虫就称之为“HelloSpider”见下例。
import lxml.html,requests
url https://www.python.org/dev/peps/pep-0020/
xpath //*[idthe-zen-of-python]/pre/text()
res requests.get(url)
ht lxml.html.fromstring(res.text)
text ht.xpath(xpath)
print(Hello,\n.join(text))运行结果 代码分析
导入模块
import lxml.html,requests这里我们使用import导入了两个模块分别是lxml库中的html以及python中著名的requests库。lxml是用于解析XML和HTML的工具可以使用xpath和css来定位元素而requests则是著名的Python HTTP库其口号是“给人类用的HTTP”相比于Python自带的urllib库而言requests的有着不少优点使用起来十分简单接口设计也非常合理。实际上对Python比较熟悉的话就会知道在Python 2中一度存在着urllib, urllib2, urllib3, httplib, httplib2等一堆让人易于混淆的库可能官方也察觉到了这个缺点Python 3中的新标准库urllib就比Python 2好用一些。曾有人在网上问道“urllib, urllib2, urllib3的区别是什么怎么用”有人回答“为什么不去用requests呢”可见requests的确有着十分突出的优点。同时也建议读者尤其是刚刚接触网络爬虫的人采用requests可谓省时省力。
定义变量
url https://www.python.org/dev/peps/pep-0020/
xpath //*[idthe-zen-of-python]/pre/text()这里我们定义了两个变量Python不需要声明变量的类型url和xpath会自动被识别为字符串类型。url是一个网页的链接可以直接在浏览器中打开页面中包含了Python之禅的文本信息。xpath变量则是一个xpath路径表达式我们刚才提到lxml库可以使用xpath来定位元素当然定位网页中元素的方法不止xpath一种以后我们会介绍更多的定位方法。
re get 数据
res requests.get(url)使用了requests中的get方法对url发送了一个HTTP GET请求返回值被赋值给res于是我们便得到了一个名为res的Response对象接下来就可以从这个Response对象中获取我们想要的信息。
处理html
ht lxml.html.fromstring(res.text)lxml.html是lxml下的一个模块顾名思义主要负责处理HTML。fromstring方法传入的参数是res.text即刚才我们提到的Response对象的text文本内容。在fromstring函数的doc string中文档字符串即此方法的说明说道这个方法可以“Parse the html, returning a single element/document.”即fromstring根据这段文本来构建一个lxml中的HtmlElement对象。
输出
text ht.xpath(xpath)
print(Hello,\n.join(text))这两行代码使用xpath来定位HtmlElement中的信息并进行输出。text就是我们得到的结果“.join()”是一个字符串方法用于将序列中的元素以指定的字符连接生成一个新的字符串。因为我们的text是一个list对象所以使用‘’这个空字符来连接。 如果不进行这个操作而直接输出程序会报错出现‘TypeError: Can’t convert ‘list’ object to str implicitly’这样的错误。当然对于list序列而言我们还可以通过一段循环来输出其中的内容。
思考 通过刚才这个十分简单的爬虫示例我们不难发现爬虫的核心任务就是访问某个站点一般为一个URL地址然后提取其中的特定信息之后对数据进行处理在这个例子中只是简单地输出。当然根据具体的应用场景爬虫可能还需要很多其他的功能比如自动抓取多个页面、处理表单、对数据进行存储或者清洗等等。 其实如果我们只是想获取特定网站所提供的关键数据而每个网站都提供了自己的API (应用程序接口Application Programming Interface)那么我们对于网络爬虫的需求可能就没有那么大了。毕竟如果网站已经为我们准备好了特定格式的数据只需要访问API就能够得到所需的信息那么又有谁愿意费时费力地编写复杂的信息抽取程序呢现实是虽然有很多网站都提供了可供普通用户使用的API但其中很多功能往往是面向商业的收费服务。另外API毕竟是官方定义的免费的格式化数据不一定能够满足我们的需求。掌握一些网络爬虫编写不仅能够做出只属于自己的功能还能在某种程度上拥有一个高度个性化的“浏览器”因此学习爬虫相关知识还是很有必要的。