本篇博客爬取内容如下:
爬取校花网的图片
准备工作:
1.安装python3
2.安装pycharm
3.安装Scrapy,参考:Scrapy安装
cmd命令新建Scrapy工程
1. 在D:\PythonProjects目录下新建出一个名为pycodes的文件夹
2. Win+R 打开cmd命令行,用命令切换到D:\PythonProjects\pycodes目录下
切换到d盘下,在cmd命令行下输入"d:"
d:
进入到d盘 D:\PythonProjects\pycodes目录下
cd D:\PythonProjects\pycodes
3. 通过命令新建一个scrapy工程:
scrapy startproject pyscrapydemo
有如上“You can start your first spider with:”输出为成功创建scrapy工程。
4. 查看pycodes目录下生成了工程文件夹:
我们可以进入到spider目录下写我们的python爬虫程序
例如创建了一个爬虫 demo.py,用命令scrapy crawl demo运行。
这里只是演示如何用命令创建一个scrapy工程,了解命令的作用以及执行命令后产生了什么变化即可。
用Scrapy爬取校花网图片
1. 创建工程
打开PyCharm软件,用PyCharm创建一个python项目:xiaohua(名字随意取)
点击PyCharm左下角Terminal进入命令行
- 2.创建Scrapy爬虫项目
scrapy startproject myfirstspider
3.创建一只简单爬虫
进入到爬虫项目目录myfirstspider
cd myfirstspider
创建爬虫
语法:scrapy genspider [参数] <爬虫名> <域名>
scrapy genspider -t basic xiaohua xiaohuar.com
其中:-t 为模板
执行以上命令后,在spiders目录下生成xiaohua.py文件:
4.编写爬虫代码
编辑xiaohua.py,内容如下:
# -*- coding: utf-8 -*-
import scrapy
from scrapy.http import Request
import re
class XiaohuaSpider(scrapy.Spider):
name = 'xiaohua'
allowed_domains = ['xiaohuar.com']
start_urls = []
#修改range()括号里的内容可以调整下载页面数量
for i in range(3):
url = "http://www.xiaohuar.com/list-1-%s.html" %i
start_urls.append(url)
def parse(self, response):
if "www.xiaohuar.com/list-1" in response.url:
# 下载的html源代码
html = response.text
# 网页中图片存储地址:src="/d/file/20160126/905e563421921adf9b6fb4408ec4e72f.jpg"
# 通过正则匹配到所有的图片
# 获取的是图片的相对路径的列表
# \d+代表匹配一个或多个数字
# \w+代表匹配一个或多个字母、数字、下划线的字符
img_urls = re.findall(r'/d/file/\d+/\w+\.jpg', html)
# 使用循环对图片页进行请求
for img_url in img_urls:
# 将图片的URL补全
if "http://" not in img_url:
img_url = "http://www.xiaohuar.com%s" % img_url
# 回调,返回response
yield Request(img_url)
else:
# 下载图片
url = response.url
# 保存的图片文件名
title = re.findall(r'\w*.jpg', url)[0]
# 保存图片,保存的目录要先创建出来
with open('D:\\xiaohua_img\\%s' % title, 'wb') as f:
f.write(response.body)
D盘下新建xiaohua_img文件夹,用于保存爬虫图片
5.运行爬虫程序
scrapy crawl xiaohua
6.查看结果
查看在D:\xiaohua_img文件夹下,爬虫下载了校花图片,如下图。
小结:
Scrapy写爬虫程序的步骤:
1.创建工程
2.新建项目>scrapy startproject myfirstspider
3.创建爬虫
>cd myfirstspider
>scrapy genspider -t basic xiaohua xiaohuar.com
4.编写爬虫代码xiaohua.py
5.运行爬虫程序>scrapy crawl xiaohua
6.查看结果
完成! enjoy it!