前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬取博客园文章

爬取博客园文章

作者头像
Noneplus
发布2020-08-11 10:18:56
4950
发布2020-08-11 10:18:56
举报
文章被收录于专栏:开发笔记开发笔记

一直想整个爬虫玩玩,之前用Java试过...的确是术业有专攻啊,Python写起爬虫来更加方便

今天的成果:

main文件

主要的方法都封装在了spider-cnblogs里了,这里主要传递一个url,待会代码贴在后边

spider-cnblogs

大致的思路是这样的,先用requests发送请求,然后使用BeautifulSoup进行html解析,(推荐使用CSS选择器的方式获取想要的内容),解析完成后持久化到数据库,这里使用了阿里云的ECS,里面安装了一个MySQL。

代码

main.py

代码语言:javascript
复制
from black_fish.cnblogs.spider_cnblogs import Cnblogs

if __name__ == '__main__':
    # index,48,候选
    Cnblogs.executeSpider("https://www.cnblogs.com")
    Cnblogs.executeSpider("https://www.cnblogs.com/aggsite/topviews")
    Cnblogs.executeSpider("https://www.cnblogs.com/candidate/")

spider-cnblogs

代码语言:javascript
复制
import requests
from bs4 import BeautifulSoup
import pymysql

class Cnblogs:
    def __init__(self, id, title, href, date, star_num, comment_num, view_num):
        self.id = id
        self.title = title
        self.href = href
        self.date = date
        self.star_num = star_num
        self.view_num = view_num
        self.comment_num = comment_num

    def print(self):
        print(self.id, self.title, self.href, self.date, self.star_num, self.comment_num, self.view_num)

    def executeSpider(cnblogs_url):
        response = requests.get(cnblogs_url);

        bs = BeautifulSoup(response.text);

        # 获取标题&链接
        mainItems = bs.select(".post-item-title");

        # 获取发布日期,点赞数,评论数,浏览量
        timeItems = bs.select(".post-item-foot>.post-meta-item span");

        t_list = []

        for t_index, timeItem in enumerate(timeItems):
            t_list.append(timeItem.string)

        db = pymysql.connect("47.103.6.247", "username", "password", "black_fish_db")

        cursor = db.cursor()

        sql = "insert into cnblogs(title, href, date, star_num, comment_num, view_num) value(%s,%s,%s,%s,%s,%s)"

        for m_index, main_item in enumerate(mainItems):
            cnblog = Cnblogs(0, main_item.string, main_item.attrs['href'],
                             t_list[m_index * 4], int(t_list[m_index * 4 + 1]), int(t_list[m_index * 4 + 2]),
                             int(t_list[m_index * 4 + 3]))
            val = (cnblog.title, cnblog.href, cnblog.date, cnblog.star_num, cnblog.comment_num, cnblog.view_num)
            print(val)
            cursor.execute(sql, val)
        db.commit()

        db.close()
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • main文件
  • spider-cnblogs
  • 代码
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档