爬取套图之新手攻略以及注意事项

进军指南

如果是没有任何语言开发经验的同学, 建议从头系统的学起, 无论 是书、视频还是文字教程都可以。

如果是有其他语言开发经验的同学 ,建议从一个案例入手 , 比如爬取某个网站的套图 。因为语言都是想通的 ,语法之类的只要你要语感
,代码基本能读个八九不离十所以不建议有经验的开发者从头学起 ,无论是视频还是书 ,对于开始学一门语言来说都是太浪费时间了
。当然,等你深入进去以后还是要系统的去学习 ,这是后话 。

软件工具

Python3
这里选择的是最新版 Python 3.7.1

安装教程这里推荐:http://www.runoob.com/python3/python3-install.html

win下载地址:https://www.python.org/downloads/windows

Linux下载地址:https://www.python.org/downloads/source

PyCharm
可视化开发工具:http://www.jetbrains.com/pycharm

这里说一句题外话,如果你在10-20分钟还没有把运行环境,集成开发环境配置并搭建好,我建议你还是放弃开发吧,祖国可能有更合适的岗位给你留着。

案例

实现步骤

以妹子图为例,其实很简单,分以下四步:

  1. 获取首页的页码数,并创建与页码对应的文件夹
  2. 获取页面的栏目地址
  3. 进入栏目,获取栏目页码数(每个栏目下有多张图片,分页显示)
  4. 获取到栏目下对用标签容器中的图片并下载

注意事项
这里以爬取某个网站的套路为例,详细见代码,这里主要说以下几点注意事项:

1). 导库,其实就类似于Java中框架或者是工具类,底层都被封装好了

安装第三方库:

#Win下直接装的 python3
pip install bs4、pip install requests
#Linux python2 python3 共存
pip3 install bs4、pip3 install requests

导入第三方库:

#导入requests库 import requests
#导入文件操作库 import os
#bs4全名BeautifulSoup,是编写python爬虫常用库之一,主要用来解析html标签。 import bs4 from bs4 import BeautifulSoup
#基础类库 import sys
#Python 3.x 解决中文编码问题 import importlib importlib.reload(sys)

2)定义方法函数,一个爬虫可能会几百行,所以尽量不要写成一坨

def download(page_no, file_path):
# 这里写代码逻辑

3)定义全局变量

#给请求指定一个请求头来模拟chrome浏览器
global headers # 告诉编译器这是全局变量 headers
headers = {‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36’}

#函数内使用之前需要
#告诉编译器我在这个方法中使用的a是刚才定义的全局变量 headers ,而不是方法内部的局部变量。 global headers

4)防盗链

有些网站加入了防盗链,无所不能的 python 解决方案:

headers = {‘Referer’: href} img = requests.get(url, headers=headers)

5)切换版本

Linux服务器使用的是阿里云服务器(centos7.4),默认版本 python2,python3 自行安装

[root@AY140216131049Z mzitu]# python2 -V
Python 2.7.5
[root@AY140216131049Z mzitu]# python3 -V
Python 3.7.1
#默认版本
[root@AY140216131049Z mzitu]# python -V
Python 2.7.5
#临时切换版本 < whereis python>
[root@AY140216131049Z mzitu]# alias python=’/usr/local/bin/python3.7’
[root@AY140216131049Z mzitu]# python -V
Python 3.7.1

6)异常捕获

在爬取的过程中可能存在异常页面,这里我们进行捕获,不影响后续操作:

try:
# 业务逻辑 except Exception as e: print(e)

执行脚本

python3 mzitu.py
#或者后台执行
nohup python3 -u mzitu.py > mzitu.log 2>&1 &

了解更多

你可能感兴趣的:(python,编程语言,爬虫)