爬虫:使用requests_html和bs4进行数据采集和分析博客园

系列文章目录

爬虫每日一例:博客园


文章目录

  • 系列文章目录
  • 前言
  • 一、爬虫是什么?
  • 二、代码操作步骤
    • 1.导库
    • 2.写入数据
  • 总结


前言

首先我需要准备Python解释器、pycharm开发工具,然后下载相应的库和包、模块,

然后进行数据采集爬取。


一、爬虫是什么?

爬虫,即网络爬虫,也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理,大家可以理解为在网络上爬行的一只蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛,如果它遇到自己的猎物(所需要的资源),那么它就会将其抓取下来。
所以我们经常说,爬虫能通过网址获得网络中的数据、然后根据目标解析数据、存储目标信息,可以节省大量的人力物力,简单地说,网络爬虫就是获取互联网公开数据的自动化工具,像百度、google本质上就是超级爬虫;所以,说在现在这个大数据世界里都离不开爬虫。

二、代码操作步骤

1.导库

代码如下:

from requests_html import HTMLSession
from bs4 import BeautifulSoup
import csv

2.写入数据

代码如下:

def main(url):        #定义一个类进行封装
    try:        # 用try except 抛出异常
        # 创建会话
        session = HTMLSession()

        # 获取网页源代码
        text = session.get(url).text

        # 对源代码解析
        bs = BeautifulSoup(text, "lxml")

        # 获取源代码代码
        articles = bs.select("#post_list article")
          
        # 用open读取写入博客园数据为.csv文件
        f = open(f'博客园数据.csv', mode='a', encoding='utf-8', newline='')
        csv_writer = csv.DictWriter(f, fieldnames=[
            '标题',
            '内容',
            '作者',
        ])
        csv_writer.writeheader()

        num = 0
        for article in articles:
            # 获取标题
            item_text = article.select_one("section.post-item-body div.post-item-text")
            title = item_text.a.text.strip(" \n")  # 获取标题
            summary = item_text.p.text.strip(" \n")  # 获取内容

            footer = article.select_one("section.post-item-body footer.post-item-foot")
            author = footer.a.span.text.strip(" \n")  # 作者

            # 改写为字典类型包裹
            dit = {
                '标题': title,
                '内容': summary,
                '作者': author,
            }
            csv_writer.writerow(dit)

            print("标题: ", title)
            print("内容: ", summary)
            print("作者: ", author)
            # 分割线
            print("====================================================================================")

            # 用len查看长度
            num = num+len(title)
            num = num + len(summary)
            num = num + len(author)

        return num
    except TypeError:
        pass
# 爬取博客园分类的网址数据
main("https://www.cnblogs.com/cate/java/")
#main("https://www.cnblogs.com/cate/python/")
#main("https://www.cnblogs.com/cate/php/")
#main("https://www.cnblogs.com/cate/cpp/")
#main("https://www.cnblogs.com/cate/c/")


总结

首先我需要先准备Python解释器、pycharm开发工具,然后下载相应的库和包、模块,
最直接的方式:去官网上的外网机器上,可以去PyPI网站(https://pypi.org/)下载对应的包。需要格外注意,包之间的依赖关系,以及包的适用平台。
用pip install <包名> -i https://pypi.douban.com/simple(这个下载是内网下载的,比较快)
pip install <包名>(这个下载是外网下载的,比较慢)

下载requests_html和 bs4、csv;
完成之后,直接编写代码了,主要我是使用requests_html和bs4去爬取博客园的数据,后面那个爬取博客园分类的网址可以自己再往后面加,反正自我感觉还行,每次爬完之后就会有不同感受和收获吧!

你可能感兴趣的:(练练手,题目,python,开发语言,爬虫,pycharm,编辑器)