urllib
Urllib是 python 内置的库,在 Python 这个内置的 Urllib 库中有这么 4 个模块css
request:request模块是咱们用的比较多的,就是用它来发起请求,因此咱们重点说说这个模块html
error:error模块就是当咱们在使用 request 模块遇到错了,就能够用它来进行异常处理python
parse:parse模块就是用来解析咱们的 URL 地址的,好比解析域名地址啦,URL指定的目录等git
robotparser:这个用的就比较少了,它就是用来解析网站的 robot.txtgithub
了解了 urllib 以后
咱们就能够用 python 代码来模拟请求了web
Requests这个库比咱们上次说的 urllib 但是要牛逼一丢丢的,毕竟 Requests 是在 urllib 的基础上搞出来的。经过它咱们能够用更少的代码模拟浏览器操做。
对于不是 python 的内置库,咱们须要安装一下,直接使用 pip 安装正则表达式
pip install requests
一行代码 Get 请求chrome
r = requests.get('https://www.sina.com.cn/')
一行代码 Post 请求浏览器
r = requests.post('https://www.sina.com.cn/', data = {'key':'value'})
伪装本身是浏览器服务器
>>> url = 'https://www.sina.com.cn/' >>> headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3704.400 QQBrowser/10.4.3620.400'} >>> r = requests.get(url, headers=headers)
获取服务器响应文本内容
>>> import requests >>> r = requests.get('https://www.sina.com.cn/') >>> r.text
利用正则表达式去提取信息太特么麻烦了
有没有什么别的方式更方便过滤咱们想要的内容啊
emmmm~
你还别说还真有有一个高效的网页解析库它的名字叫作
BeautifulSoup
它是一个能够从 HTML 或 XML 文件中提取数据的 Python 库
首先咱们要安装一下这个库
pip install beautifulsoup4
beautifulsoup支持不一样的解析器
好比
对 HTML 的解析
对 XML 的解析
对 HTML5 的解析
通常状况下咱们用的比较多的是 lxml 解析器,咱们先来使用一个例子让你体验一下beautifulsoup 的一些经常使用的方法
先安装一下
pip install beautifulsoup4 pip install lxml
接着将 html 的源代码传给 BeautifulSoup
此时此刻就不须要本身写正则匹配了
咱们要作的就是从这个对象直接获取咱们要的内容,获取标题的内容
好比咱们有这样一段HTML代码接着将 html 的源代码传给 BeautifulSoup,此时此刻就不须要本身写正则匹配了,咱们要作的就是从这个对象直接获取咱们要的内容获取标题的内容
而后咱们能够获取标签内容,连接内容以及文本内容
除了find方法以外,若是你对css比较熟悉也可使用 select 方法
什么是 selenium ?其实它就是一个自动化测试工具,支持各类主流的浏览器,遇到了 python,selenium 变成了爬虫利器咱们先来安装一下
pip install selenium
接着咱们下载Chrome驱动
Chrome: | https://sites.google.com/a/chromium.org/chromedriver/downloads |
Edge: | https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ |
Firefox: | https://github.com/mozilla/geckodriver/releases |
Safari: | https://webkit.org/blog/6900/webdriver-support-in-safari-10/ |
接着咱们来尝试一下代码
咱们发现自动弹出了一个Chrome浏览器窗口
哇,好神奇,能够看到它本身打开了 Chrome 浏览器,访问了百度而且搜索了波多野结衣的照片
这就是 selenium 的魅力
咱们来看下咱们刚刚写的代码
就这样完成了一次自动的百度搜索
当咱们使用驱动打开了一个页面,这时候其实没什么鸟用,由于咱们要对那些元素进行操做
就像刚刚咱们要获取输入框而后输入一些内容还有获取按钮点击什么的,selenium 提供了挺多方法给咱们获取的,当咱们要在页面中获取一个元素的时候可使用这些方法。
想要在页面获取多个元素呢
就能够这样