cnblogs 博客爬取 + scrapy + 持久化

cnblogs_spider.py

# -*- coding: utf-8 -*-
import scrapy

from ..items import TttItem

class ChoutiSpider(scrapy.Spider):
    name = ‘chouti‘  # 爬虫名字
    start_urls = [‘https://www.cnblogs.com‘]

    def parse(self, response):
        div_list = response.xpath(‘//div[@class="post_item_body"]‘)
        for div in div_list:
            title = div.xpath(‘./h3/a/text()‘).extract_first()
            url = div.xpath(‘./h3/a/@href‘).extract_first()
            outline = div.css(‘.post_item_summary::text‘).extract()[-1]
            author = div.xpath(‘./div[@class="post_item_foot"]/a/text()‘).extract_first()

            item = TttItem()
            item[‘title‘] = title
            item[‘outline‘] = outline
            item[‘author‘] = author
            item[‘url‘] = url
            yield scrapy.Request(url, callback=self.get_detail, meta={‘item‘: item})

        beforeurl = response.url
        print(beforeurl)

        # 获取最后一个 a 标签
        next_url = response.xpath(‘//div[@class="pager"]/a[last()]/@href‘).extract_first()
        print(‘next_url‘, next_url)

        yield scrapy.Request(self.start_urls[0] + next_url, callback=self.parse)

    # 获取文章详情
    def get_detail(self, response):
        content = response.xpath(‘//div[@id="cnblogs_post_body"]‘).extract_first()
        if not content:
            content=response.css(‘content‘).extract_first()

        item = response.meta.get(‘item‘)
        item[‘content‘] = content
        yield item

piplines.py

import pymysql

class CnblogsSaveMysqlPipline(object):
    def open_spider(self, spider):
        self.conn = pymysql.connect(user=‘root‘, password=‘123123‘, db=‘cnblogs‘)

    def close_spider(self, spider):
        self.conn.close()

    def process_item(self, item, spider):
        cursor = self.conn.cursor()
        sql = ‘‘‘insert into cnb (title, outline, author, url, content) values (%s,%s,%s,%s,%s)‘‘‘
        cursor.execute(sql, args=(item[‘title‘], item[‘outline‘], item[‘author‘], item[‘url‘], item[‘content‘]))
        self.conn.commit()

原文地址:https://www.cnblogs.com/kai-/p/12681708.html

时间: 2024-11-02 17:22:16

cnblogs 博客爬取 + scrapy + 持久化的相关文章

爬虫 - 博客爬取并入库

''' 对崔庆才的个人博客上的文章基本信息的爬取 (共41页) https://cuiqingcai.com/page/1 标题.链接.浏览的数目.评论的数目以及喜欢的人数 ''' import re import requests import logging from lxml import etree import pymysql logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(

使用org-mode写cnblogs博客

.title { text-align: center; margin-bottom: .2em } .subtitle { text-align: center; font-size: medium; font-weight: bold; margin-top: 0 } .todo { font-family: monospace; color: red } .done { font-family: monospace; color: green } .priority { font-fami

cnblogs博客下载-cnblogs博客导出-cnblogs博客备份工具-基于python

http://blog.csdn.net/infoworld/article/details/19547723 以下代码是基于infoworld的csdn备份python代码修改的cnblogs博客备份,但是和infoworld的界面不匹配,只能够用在python里面.python确实有意思,开发很快,怪不得这么流行. #! encoding=utf-8 #cnblogs博客备份,使用方法:修改最下面的url和output,然后执行就可以了. import urllib2 import re i

使用自己的域名解析cnblogs博客(CSDN也可以)

本文主要介绍怎样使用自己购买的域名指向cnblogs博客 通常来说技术人员都会创建个自己的技术博客,总结下工作中的问题,经验等等,不过某些博客的访问链接的确是不太容易记忆或者输入,对我们分享造成一定的困扰,本文通过配置github page静态页面的功能,跳转到指定的博客地址来解决这个问题. (直接配置域名解析到博客地址无法访问) 实现原理: 用户访问--->阿里云解析--->github page跳转--->真实的博客地址 1.创建github page静态页面跳转进行访问博客地址 1

使用自己的域名解析cnblogs博客

使用自己的域名解析cnblogs博客 0.实现原理: 用户访问 ---> 阿里云解析 ---> github page跳转 ---> 真实的博客地址 1.创建github page静态页面跳转进行访问博客地址 index.html文件 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>博客园(http://www.cnblogs.com/h

利用Word发布文章到cnblogs博客

利用Word发布文章到cnblogs博客 用博客园cnblogs:http://www.cnblogs.com/博客名称/services/metablogapi.aspx,word老是提醒"word无法注册你的账户",后来用了博客园cnblogs设置页面的URL,这才成功. word注册/新建博客帐户设置:----------------------------------------------------------------------------输入博客信息API(A):M

[Python爬虫]高并发cnblogs博客备份工具(可扩展成并行)

并发爬虫小练习. 直接粘贴到本地,命名为.py文件即可运行,运行时的参数为你想要爬取的用户.默认是本博客. 输出是以用户名命名的目录,目录内便是博客内容. 仅供学习python的多线程编程方法,后续会重写成并行爬虫. 爬虫代码如下: 1 # -*- coding:utf-8 -*- 2 from multiprocessing.managers import BaseManager 3 from pyquery import PyQuery 4 import os, sys, urllib 5

python实现数据爬取-清洗-持久化存储-数据平台可视化

基于python对淘宝模特个人信息进行筛选爬取,数据清洗,持久化写入mysql数据库.使用django对数据库中的数据信息筛选并生成可视化报表进行分析. 数据爬取,筛选,存库: # -*- coding:utf-8 -*-   import requests from bs4 import BeautifulSoup import sys import re reload(sys) sys.setdefaultencoding('utf-8') import MySQLdb import cha

Python爬虫入门教程 17-100 博客抓取数据

写在前面 写了一段时间的博客了,忽然间忘记了,其实博客频道的博客也是可以抓取的,所以我干了..... 其实这事情挺简单的,打开CSDN博客首页,他不是有个最新文章么,这个里面都是最新发布的文章. 打开F12抓取一下数据API,很容易就获取到了他的接口 提取链接长成这个样子 https://blog.csdn.net/api/articles?type=more&category=newarticles&shown_offset=1540381234000000 发现博客最新文章是一个瀑布流