爬虫常用库介绍
@
urllib
-
Urllib是 python 内置的库,在 Python 这个内置的 Urllib 库中有这么 4 个模块
-
request:request模块是我们用的比较多的,就是用它来发起请求,所以我们重点说说这个模块
-
error:error模块就是当我们在使用 request 模块遇到错了,就可以用它来进行异常处理
-
parse:parse模块就是用来解析我们的 URL 地址的,比如解析域名地址啦,URL指定的目录等
-
robotparser:这个用的就比较少了,它就是用来解析网站的 robot.txt
加群:456926667,获取更多学习资料、练手项目,以及学习氛围
了解了 urllib 之后
我们就可以用 python 代码来模拟请求了
Requests
Requests这个库比我们上次说的 urllib 可是要牛逼一丢丢的,毕竟 Requests 是在 urllib 的基础上搞出来的。通过它我们可以用更少的代码模拟浏览器操作。
对于不是 python 的内置库,我们需要安装一下,直接使用 pip 安装
pip install requests
一行代码GET请求
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
BeautifulSoup
利用正则表达式去提取信息太特么麻烦了
有没有什么别的方式更方便过滤我们想要的内容啊
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
什么是 selenium
?其实它就是一个自动化测试工具,支持各种主流的浏览器,遇到了 python
,selenium
变成了爬虫利器我们先来安装一下
pip install selenium
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浏览器窗口 |
这就是 selenium 的魅力
我们来看下我们刚刚写的代码
就这样完成了一次自动的百度搜索
当我们使用驱动打开了一个页面,这时候其实没什么鸟用,因为我们要对那些元素进行操作
就像刚刚我们要获取输入框然后输入一些内容还有获取按钮点击什么的,selenium 提供了挺多方法给我们获取的,当我们要在页面中获取一个元素的时候可以使用这些方法。
想要在页面获取多个元素呢