一、爬虫基本知识
URL(Uniform Resource Locator的缩写):也被称为网页地址,通俗讲就是文件在网络中的位置,URL就是web地址,俗称“网址”。
HTTP是一个客户端(用户)和服务器端(网站)之间进行请求和应答的标准
用户代理(user agent):指客户端
用爬虫获取“python之禅”的文本
import lxml.html,requests
ur1='http://www.python.org/dev/peps/pep-0020/'
xpath='//*[@id="the-zen-of-python"]/pre/text()'
res=requests.get(ur1)
ht=lxml.html.fromstring(res.text)
text=ht.xpath(xpath)
print('Hello,\n'+''.join(text))
运行结果:
以上时“Python之禅的内容”,上述程序完成了一个网络爬虫最普遍的流程:1、访问站点;2、定位所需信息;3、得到并处理信息。
代码解析
import lxml.html,requests
上述代码导入了两个模块,分别是lxml库中的html以及python中著名的Requests库。lxml是用于解析XML和HTML的工具。
ur1='http://www.python.org/dev/peps/pep-0020/'
xpath='//*[@id="the-zen-of-python"]/pre/text()'
上述代码定义了两个变量,ur1和xpath会自动被识别为字符串类型。ur1是一个网页链接,可以直接在浏览器中打开,页面中包含“Python之禅”的文本信息。xpath变量则是一个XPath路径表达式。lxml库可以使用XPath来定位元素。
res=requests.get(ur1)
上述使用了Requests中的get()方法,对ur1发送了一个HTTP GET请求,返回值被赋值给res,于是便得到了一个名为res的Response对象,接下来就可以从这个Response对象获取需要的信息。
ht=lxml.html.fromstring(res.text)
lxml.html是lxml下的一个模块,顾名思义,主要负责处理HTML。fromstring方法传入的参数是res.text,即Response对象的text(文本)内容。fromstring()方法的docstring(文档字符串,即此方法的说明)中提到,这个方法可以“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对象,所以使用‘ ’这个空字符来连接。如果不进行这个操作而直接输出则会报错。