伯乐在线爬虫项目目的及项目准备:
1.使用scrapy创建项目
2.创建爬虫,bole 域名 jobbole.com
3.Start_urls = [‘http://blog.jobbole.com/all-posts/’]
4.爬取所有页数的文章
5.文章列表页需要数据
a) 缩略图的地址
b) 详情url地址
6.详情页面要提取的数据
# 博客标题
# 博客创建时间
# 博客url
# 将url经过md5加密生成id
# 缩略图的地址
# 图片保存路径 #这个属性考虑好在哪赋值
# 点赞数
# 收藏数
# 评论数
# 博客作者
# 博客标签
7.将图片下载,保存到imgs文件夹中
8.将爬取的所有数据存储到数据库
创建项目我们在cmd中进行创建,在开始之前我们要将数据库表以及其中字段创建好。
spider爬虫代码:
# -*- coding: utf-8 -*-
import scrapy
import re
# ..上级目录
from ..items import BoleItem
# .同级目录
from .tools import get_number,md5
# MVC Model view controler
# 降低代码耦合性
# MVVC
# 做url地址的拼接,如果没有域名才会进行拼接
import urlparse
class BoleSpider(scrapy.Spider):
name = 'bole'
allowed_domains = ['jobbole.com']
start_urls = ['http://blog.jobbole.com/all-posts/']
def parse(self, response):
# 获取每一页的文章url和图片url
a_list = response.xpath(".//*[@id='archive']/div/div[1]/a")
for a in a_list:
# 获取博客详情页面url
# 获取博客图片的url
a_href = a.xpath("@href").extract_first('')
img_src = a.xpath("img/@src").extract_first('')
yield scrapy.Request(
url=a_href,
callback=self.parse_detail,
meta={"img_src":img_src}
)
next_page = response.xpath("//a[@class='next page-numbers']/@href").extract_first('')
if next_page:
# 发送请求,请求下一页
yield scrapy.Request(
url=next_page
)
def parse_detail(self,response):
# 博客详情地址
blog_url