爬虫常用库介绍

@

urllib

  • Urllib是 python 内置的库,在 Python 这个内置的 Urllib 库中有这么 4 个模块

  • request:request模块是我们用的比较多的,就是用它来发起请求,所以我们重点说说这个模块

  • error:error模块就是当我们在使用 request 模块遇到错了,就可以用它来进行异常处理

  • parse:parse模块就是用来解析我们的 URL 地址的,比如解析域名地址啦,URL指定的目录等

  • robotparser:这个用的就比较少了,它就是用来解析网站的 robot.txt
    加群:456926667,获取更多学习资料、练手项目,以及学习氛围
    了解了 urllib 之后
    我们就可以用 python 代码来模拟请求了
    ![]( https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xOTA2NzkyMC0zNWU4NjJhMzE4YjJlYmNkLnBuZw?x-oss-process=image/format ,png)

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

![]( https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xOTA2NzkyMC00NTQ2OWIyOGVkY2QzNDZjLnBuZw?x-oss-process=image/format ,png)

BeautifulSoup

利用正则表达式去提取信息太特么麻烦了

![]( https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xOTA2NzkyMC0zNDRhZjk5YjY2ZDBlODBlLnBuZw?x-oss-process=image/format ,png)
有没有什么别的方式更方便过滤我们想要的内容啊
emmmm~
你还别说还真有有一个高效的网页解析库它的名字叫做
BeautifulSoup
它是一个可以从 HTML 或 XML 文件中提取数据的 Python 库
首先我们要安装一下这个库

pip install beautifulsoup4

beautifulsoup支持不同的解析器

比如

pip install beautifulsoup4

pip install lxml

接着将 html 的源代码传给 BeautifulSoup
此时此刻就不需要自己写正则匹配了
我们要做的就是从这个对象直接获取我们要的内容,获取标题的内容
比如我们有这样一段HTML代码
![]( https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xOTA2NzkyMC1kODcwYzgxNGIxMGYwNzNiLnBuZw?x-oss-process=image/format ,png)
接着将 html 的源代码传给 BeautifulSoup,此时此刻就不需要自己写正则匹配了,我们要做的就是从这个对象直接获取我们要的内容获取标题的内容
![]( https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xOTA2NzkyMC00NWU5OTU5ZWNlNzBhNzU3LnBuZw?x-oss-process=image/format ,png)

然后我们可以获取标签内容,链接内容以及文本内容
![]( https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xOTA2NzkyMC01NDQ3YzMxZjcwZTQ3MmY2LnBuZw?x-oss-process=image/format ,png)
除了find方法之外,如果你对css比较熟悉也可以使用 select 方法

selenium

什么是 selenium ?其实它就是一个自动化测试工具,支持各种主流的浏览器,遇到了 pythonselenium 变成了爬虫利器我们先来安装一下

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/
接着我们来尝试一下代码
![]( https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xOTA2NzkyMC1hNDQxM2FhMmQxODUwYTAxLnBuZw?x-oss-process=image/format ,png)
我们发现自动弹出了一个Chrome浏览器窗口

![]( https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xOTA2NzkyMC00M2U2MzQ1Nzc2NGNiNjY2LnBuZw?x-oss-process=image/format ,png)

这就是 selenium 的魅力

我们来看下我们刚刚写的代码
![]( https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xOTA2NzkyMC0zOTcxY2RiYjNkNWVhYmVhLnBuZw?x-oss-process=image/format ,png)
就这样完成了一次自动的百度搜索
当我们使用驱动打开了一个页面,这时候其实没什么鸟用,因为我们要对那些元素进行操作
就像刚刚我们要获取输入框然后输入一些内容还有获取按钮点击什么的,selenium 提供了挺多方法给我们获取的,当我们要在页面中获取一个元素的时候可以使用这些方法。
![]( https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xOTA2NzkyMC1iMjYyNzQ0Y2U4NGFjZjRkLnBuZw?x-oss-process=image/format ,png)
想要在页面获取多个元素呢
![]( https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xOTA2NzkyMC1lYWU0ZDA0ZTc3ZWVlY2NmLnBuZw?x-oss-process=image/format ,png)

posted @ 2019-12-02 21:37  大熊Python  阅读(1092)  评论(0)    收藏  举报