说真的,不知道为啥!只要一问那些做过爬虫的筒靴,不管是自己平时兴趣爱好亦或是刚接触入门,都喜欢拿豆瓣网作为爬虫练手对象,以至于到现在都变成了没爬过豆瓣的都不好意思说自己搞过爬虫了。好了,切入正题......
一、系统环境
Python版本:2.7.12(64位)
Scrapy版本:1.4.0
Mysql版本:5.6.35(64位)
系统版本:Win10(64位)
MySQLdb版本: MySQL-python-1.2.3.win-amd64-py2.7(64位)
开发IDE:PyCharm-2106.3.3(64位)
二、安装MySQL数据库
2.1、安装MySQLdb
ok,到这里,说明上面的MySQL已经安装成功了,接下来你需要安装MySQLdb了。
2.2、什么是MySQLdb?
MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的;简单来说,就是类似于Java中的JDBC。
2.3、如何安装MySQLdb?
目前你有两个选择:
1、安装已编译好的版本(强烈推荐)
2、从官网下载,自己编译安装(这个真要取决于个人的RP人品了,如果喜欢折腾的话不妨可以试他一试,在此不做介绍,请自行度娘即可)
ok,我们选择第一种方式,官网下载地址:http://www.codegood.com/downloads,大家根据自己的系统自行下载即可,下载完毕直接双击进行安装,可以修改下安装路径,然后一路next即可。
image.png
2.4、验证MySQLdb是否安装成功
cmd——》输入python——》输入import MySQLdb,查看是否报错,没有报错则说明MySQLdb安装成功!
image.png
2.5、如何使用MySQLdb
2.6、熟悉XPath
抓取网页时,你做的最常见的任务是从HTML源码中提取数据。现有的一些库可以达到这个目的。
BeautifulSoup:是在程序员间非常流行的网页分析库,它基于HTML代码的结构来构造一个Python对象, 对不良标记的处理也非常合理,但它有一个缺点:慢。
lxml:是一个基于 ElementTree (不是Python标准库的一部分)的python化的XML解析库(也可以解析HTML)。
XPath:即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。XPath基于XML的树状结构,有不同类型的节点,包括元素节点,属性节点和文本节点,提供在数据结构树中找寻节点的能力。
Scrapy提取数据有自己的一套机制。它们被称作选择器(seletors),因为他们通过特定的 XPath 或者 CSS 表达式来“选择” HTML文件中的某个部分。
ok,有了上面这些基本的准备工作之后,我们可以开始正式编写爬虫程序了。这里以豆瓣电影TOP250为例:https://movie.douban.com/top250
三、编写爬虫
首先我们使用Chrome或者Firefox浏览器打开这个地址,然后一起分析下这个页面的html元素结构,按住F12键即可查看网页源代码。分析页面我们可以看到,最终需要提取的信息都已经被包裹在class属性为grid_view的这个ol里面了,所以我们就可以基本确定解析范围了,以这个ol元素为整个大的边框,然后再在里面进行查找定位即可。
image.png
然后具体细节在此就不罗嗦了,直接撸代码吧:
完整的代码已经上传至github上git@github.com:hu1991die/douan_movie_spider.git,欢迎fork,欢迎clone!
1、DoubanMovieTop250Spider.py
# encoding: utf-8
'''
@author: feizi
@file: DoubanMovieTop250Spider.py
@Software: PyCharm
@desc:
'''
import re
from scrapy import Request
from scrapy.spiders import Spider
from douan_movie_spider.items import DouanMovieItem
class DoubanMovieTop250Spider(Sp