Python爬虫简介

一、爬虫是什么?

简单讲就是:模拟网络请求,接收到响应,然后处理响应得到自己想要的数据。
本质上就是一次/多次http请求而已,唯一不同的是,请求的是别人家的服务器。

二、使用Python

1.工具准备

Python: 3.7.3
requests: 2.21.0
BeautifulSoup4: 4.7.1
Pycharm: 2017.2
目标页面: https://litets.com/

2.工具安装

Python的安装:
下载地址:https://www.python.org/downloads/windows/
选择对应的地址下载安装即可
requests安装:

$ pip install requests==2.21.0 # python3 pip使用pip3, 也可不带版本号默认安装最新的

BeautifulSoup4安装:

$ pip install beautifulsoup4==4.7.1 # python3 pip使用pip3, 也可不带版本号默认安装最新的

实例:

$ pip3 install beautifulsoup4
Requirement already satisfied: beautifulsoup4 in /usr/local/lib/python3.7/site-packages (4.7.1)
Requirement already satisfied: soupsieve>=1.2 in /usr/local/lib/python3.7/site-packages (from beautifulsoup4) (1.8)

Pycharm安装: 下载安装即可:https://www.jetbrains.com/pycharm/download/

3.创建项目

然后在项目目录创建一个spider.py

# -*- coding:utf-8 -*-
from bs4 import BeautifulSoup
import requests


res = requests.get('https://litets.com')
if res.status_code == 200:
    print(res.text)
else:
    print('请求失败')

右键运行项目

然后就可以看到请求下来内容了

4.解析我们想要的内容

上面我们已经成功的把想要的东西加载下来了,但是并不是我们想要的内容, 我们必须处理数据才能等到想要的内容。

这里我们使用BeautifulSoup4这个强大的库。

修改代码如下:

# -*- coding:utf-8 -*-
from bs4 import BeautifulSoup
import requests


res = requests.get('https://litets.com')
if res.status_code == 200:

    # 第一个参数就是我们要解析的内容,第二个是使用什么解析器
    # 解析器有html.parser lxml html5lib
    soup = BeautifulSoup(res.text, 'html.parser')

    print(soup.find_all('a'))
else:
    print('请求失败')

再次运行将会看到

解释:

soup = BeautifulSoup(res.text, 'html.parser')
print(soup.find_all('a'))

第一行我们构造了一个BeautifulSoup对象,并且使用声明使用html.parser解析器
第二行我们使用BeautifulSoup的find_all()方法查找所有html的a标签。

5.进一步处理数据

上面我们只是得到了所有a标签,现在我们需要得到这样的数据格式:

标题:链接
爬虫教程: xxxx.html

修改代码:

# -*- coding:utf-8 -*-
from bs4 import BeautifulSoup
import requests


res = requests.get('https://litets.com')
if res.status_code == 200:

    # 第一个参数就是我们要解析的内容,第二个是使用什么解析器
    # 解析器有html.parser lxml html5lib
    soup = BeautifulSoup(res.text, 'html.parser')

    # 迭代查找到的所有a标签
    for a in soup.find_all('a'):
        # a 即代表 a标签 是一个bs4.element.Tag类型
        title = a.text # 得到a的text
        if not title:
            continue
        href = a['href'] # 得到a标签的href属性

        print('%s:%s' % (title, href))
else:
    print('请求失败')

运行之后得到:

关于更多的解析数据的方式请阅读:https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html 不要怕是中文的。

6.存储数据

上面已经得到想要的数据了,然后我们进行持久化就可以了, 比如数据库,文件等等。

声明:原创文章,版权所有,转载请注明出处,https://litets.com。