requests
requests是python实现的最简单易用的HTTP库,建议爬虫使用requests
import requests
url = "https://api.github.com/events"
获取某个网页
import requests
r = requests.get("https://api.github.com/events")
print(r) # <Response [200]>
print(type(r)) # <class 'requests.models.Response'>
print(r.status_code) # 200
各种请求
# 发送一个 HTTP POST 请求:
r = requests.post("http://httpbin.org/post",data = {'key':'value'})
r = requests.delete('http://httpbin.org/delete') # 发送一个 HTTP delete 请求:
r = requests.head('http://httpbin.org/get') # 发送一个 HTTP head 请求:
r = requests.options('http://httpbin.org/get') # 发送一个 HTTP options 请求:
get 传递URL参数
?+键值对
response1 = requests.get("http://httpbin.org/get?key1=value1")
print(response1.url)
#http://httpbin.org/get?key1=value1
requests提供了params关键字参数来传递参数
parameter = {
"key1":"value1",
"key2":"value2"
}
response2 = requests.get("http://httpbin.org/get",params = parameter)
print(response2.url)
# http://httpbin.org/get?key1=value1&key2=value2
还可以将一个列表作为值传入
parameter = {
"key1":"value1",
"key2":["value21","value22"]
}
response3 = requests.get("http://httpbin.org/get",params = parameter)
print(response3.url)
# http://httpbin.org/get?key1=value1&key2=value21&key2=value22
注意字典里值为 None 的键都不会被添加到 URL 的查询字符串里。
parameter = {
"key1":"value",
"key2":None
}
response4 = requests.get("http://httpbin.org/get",params = parameter)
print(response4.url) #http://httpbin.org/get?key1=value
Selenium
Selenium 是一套跨平台的浏览器自动化测试框架(工具),支持在多种系统环境、多种浏览器环境下使用,还可以使用多种编程语言来编写测试。
Selenium
有多个项目构成,形成了一个多功能的测试系统:
- Selenium Core:支持DHTML 的测试案例(效果类似数据驱动测试),它是Selenium IDE 和Selenium RC
的引擎。 - Selenium Grid - 允许您在不同的计算机上并行运行不同浏览器的测试。也就是说,针对运行不同浏览器和操作系统的不同计算机同时运行多个测试。从本质上讲,Selenium-Grid支持分布式测试执行。它允许在分布式测试执行环境中运行测试。
- Selenium IDE - 用于开发Selenium测试用例的工具。它是一个易于使用的Chrome和Firefox扩展,通常是开发测试用例的最有效方式。它使用现有的Selenium命令为您在浏览器中记录用户操作,并使用该元素的上下文定义参数。这不仅节省了时间,而且是学习Selenium脚本语法的绝佳方式。
- Selenium RC (Selenium Remote Control) - 是一个客户端/服务器系统,允许您使用几乎任何编程语言和测试框架在本地或其他计算机上控制Web浏览器。
- Selenium WebDriver - 主要新功能是集成WebDriver API。除了解决Selenium-RC API中的一些限制之外,WebDriver还旨在提供更简单,更简洁的编程接口。Selenium-WebDriver的开发是为了更好地支持动态网页,页面元素可能会在不重新加载页面的情况下发生变化。WebDriver的目标是提供精心设计的面向对象的API,为现代高级Web应用程序测试问题提供改进的支持。
XPath
1.什么是XPath
Wikipedia这样解释XPath:XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。这里讨论的是在XPath语言规范下,封装而成的一种解析XML文档的技术。在PHP,Python里,具体是指xpath这个函数。所以,Wikipedia提到的对XML文档某部分位置的定位,就是用XPath的规范,定位到这个部分,为我所用。我们的目的是解析HTML网页中的元素,将HTML转换成XML文档之后,就是XPath出鞘之时。具体的转换方法,因开发环境而异,后文会附上一些实际工作中遇到的问题。下文所述的xpath()函数均指PHP语言核心函数库中的函数xpath()。
2.XPath 路径表达式
在使用XPath之前,需要先了解下XPath的节点,路径概念,这也是XPath这门语言的单词和语法。不求全通,至少了解嘛。其中,路径表达式是xpath()的传入参数。xpath()使用路径表达式对XML文档中的某个节点(或者多个节点)进行定位。路径表达式实例:/html/body/div[@class=”content”] 。按照节点和路径概念,这个表达式是按照html,body,div层级关系,寻找属性里有class=”content”的div节点。当然,这个结果也可能是多个节点。
Beautiful Soup 库一般被称为bs4库,支持Python3,是我们写爬虫非常好的第三方库。因用起来十分的简便流畅。所以也被人叫做“美味汤”。目前bs4库的最新版本是4.60。下文会介绍该库的最基本的使用,具体详细的细节还是要看:[官方文档](Beautiful Soup Documentation)
bs4
Beautiful Soup 库一般被称为bs4库,支持Python3,是我们写爬虫非常好的第三方库。因用起来十分的简便流畅。所以也被人叫做“美味汤”。目前bs4库的最新版本是4.60。下文会介绍该库的最基本的使用,具体详细的细节还是要看:[官方文档](Beautiful Soup Documentation)
bs4库的安装
安装的方式非常简单:我们用pip工具在命令行里进行安装
pip install beautifulsoup4
事实上,bs4库 是解析、遍历、维护、“标签树“的功能库。
通俗一点说就是: bs4库把html源代码重新进行了格式化,
从而方便我们对其中的节点、标签、属性等进行操作