本文涉及爬虫、pdf文件转txt文件、提取指定内容和生成词云图四个部分。
前言
本文将介绍如何爬取网站上的pdf文件并提取文件中的指定段落计算关键词出现次数并制作动态词云图,以爬取基金季报为例。
提示:以下是本篇文章正文内容
一、引入库
import pandas
import time
import random
import requests
import os
import re
import jieba
import os.path
import pandas as pd
import matplotlib.pyplot as plt
from PyPDF2 import PdfFileReader, PdfFileWriter
from pdf2docx import Converter
from selenium import webdriver
from bs4 import BeautifulSoup
from pdfminer.pdfparser import PDFParser,PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LTTextBoxHorizontal,LAParams
from pdfminer.pdfinterp import PDFTextExtractionNotAllowed
from selenium.webdriver.common.by import By
from wordcloud import WordCloud
from collections import Counter
from pyecharts.charts import WordCloud
二、爬取网页上的基金季报
定义get_report()函数,输入基金代码,可以爬取对应基金的最新一期季度报告。
代码如下:
def get_report(code):
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
driver = webdriver.Chrome(chrome_options=chrome_options, executable_path= "D:\Downloads\chromedriver_win32\chromedriver.exe")
#运行之前需要手动改一下自己的 chromedriver.exe 的本地路径
url = 'http://fundf10.eastmoney.com/jjgg_{0}_3.html'.format(code)
driver.get(url)
content = driver.page_source
soup = BeautifulSoup(content, 'html.parser')
# 获取页码数
soup_pages = soup.find_all('div', class_='pagebtns')[0].find_all('label')
page_size = len(soup_pages)-2
list_