茅塞顿开-pandas也可以爬虫!!

一、思维定式

之前我们一说爬虫就会想到的是

  1. requests第三方库
  2. selenium
  3. scrapy
  4. beautifulsoup
  5. urllib urllib3
    等等很多的Python第三方库,当然了java也可以用来爬虫,但是效率比较慢。毕竟Python内置了很多的爬虫三方库,直接调用就可以。

二、pandas使用

说道数据分析,我们最重要也是最费时间的工作其实就是数据的清洗(ETL)工作,数据的干净与否会直接影响你后续的分析、建模、得出决策等方面。所以在我认识的pandas基本是用来做数据的处理。现在很多会用Python中pandas库的人基本都不会去使用Excel,说实话Excel属实有点慢,尤其处理大量的数据。
pandas、numpy、matplotlib被称为数据分析的‘三剑客’!但是我忘记了pandas也是可以用来爬虫的!!震惊。。。

三、pandas爬虫

  • pd.read_html方法
  • 作用:快速获取在html中页面中table格式的数据

示例数据截图:

茅塞顿开-pandas也可以爬虫!!_第1张图片

茅塞顿开-pandas也可以爬虫!!_第2张图片
类似这种网页中的表格类型的数据。

先说一下这个方法的参数:
茅塞顿开-pandas也可以爬虫!!_第3张图片
常用的参数:

io:可以是url、html文本、本地文件等;
flavor:解析器;
header:标题行;
skiprows:跳过的行;
attrs:属性,比如 attrs = {‘id’: ‘table’};
parse_dates:解析日期

注意:返回的结果是DataFrame组成的list

四、爬虫实战

  • 我们尝试去爬取上面微博热搜的数据:茅塞顿开-pandas也可以爬虫!!_第4张图片
    其实代码很简单:
import schedule
import pandas as pd
from datetime import datetime
import logging

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s')
count = 0


def get_content():
    global count  # 全局变量count
    print('----------- 正在爬取数据 -------------')
    url = 'https://s.weibo.com/top/summary?cate=realtimehot&sudaref=s.weibo.com&display=0&retcode=6102'

    df = pd.read_html(url)
    print(df[0])

    df = pd.read_html(url)[0][1:11][['序号', '关键词']]  # 获取热搜前10
    time_ = datetime.now().strftime("%Y/%m/%d %H:%M")  # 获取当前时间
    df['序号'] = df['序号'].apply(int)
    df['热度'] = df['关键词'].str.split('  ', expand=True)[1]
    df['关键词'] = df['关键词'].str.split('  ', expand=True)[0]
    df['时间'] = [time_] * len(df['序号'])
    if count == 0:
        df.to_csv('datas.csv', mode='a+', index=False, encoding='gbk')
        count += 1
    else:
        df.to_csv('datas.csv', mode='a+', index=False, header=False, encoding='gbk')


# 定时爬虫
schedule.every(1).minutes.do(get_content)

while True:
    schedule.run_pending()

结果如下:
茅塞顿开-pandas也可以爬虫!!_第5张图片
大家可以自己试一下,当然有其他好的爬虫方法也可以给博主留言,谢谢大家支持!!!!

你可能感兴趣的:(茅塞顿开-pandas也可以爬虫!!)