Files
2023-07-16 03:59:20 +00:00

395 lines
74 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Day13项目 网络爬虫进行文本分析\n",
"主要是自己动手,丰衣足食,饿了就要自己找东西吃<br>\n",
"今天的嘉宾是requests~<br>\n",
"这里还有个request趣闻,说是有很多人打错包的名字,所以有人特意造了糟糕的request库呢~<br>\n",
"世界上的坏人好多好多,孩子怕怕~~~"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [],
"source": [
"import re\n",
"import jieba\n",
"import requests\n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"plt.rcParams['font.sans-serif'] = 'SimHei'\n",
"plt.rcParams['axes.unicode_minus'] = False\n",
"import itertools\n",
"from sklearn.metrics import confusion_matrix\n",
"from sklearn.naive_bayes import MultinomialNB\n",
"from sklearn.metrics import classification_report,accuracy_score\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.preprocessing import MinMaxScaler,StandardScaler\n",
"from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer,TfidfVectorizer"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"找URL吃:在网页内按下“Ctrl+Shift+I”出现如图所示的开发者页面,选取上方的'network',找到下方的'js'\n",
"![图片](网易国际.png)\n",
"刷新页面寻找Name栏,一般在callback中有标题截面,选择Headers即可得到URL\n",
"![图片](网易国际2.png)\n",
"注意这里已经下拉产生了后续页,因此下面会有另一行\n",
"![图片](网易国际3.png)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"URL_list = {'国内': ['https://news.163.com/special/cm_guonei/?callback=data_callback',\n",
" 'https://news.163.com/special/cm_guonei_0{}/?callback=data_callback'],\n",
" '国际': ['https://news.163.com/special/cm_guoji/?callback=data_callback',\n",
" 'https://news.163.com/special/cm_guoji_0{}/?callback=data_callback'],\n",
" '财经': ['https://money.163.com/special/00259BVP/news_flow_index.js?callback=data_callback',\n",
" 'https://money.163.com/special/00259BVP/news_flow_index_0{}.js?callback=data_callback'],\n",
" '军事': ['https://news.163.com/special/cm_war/?callback=data_callback',\n",
" 'https://news.163.com/special/cm_war_0{}/?callback=data_callback'],\n",
" '游戏': ['https://tech.163.com/special/00099BPN/game_newsdata_all.js?callback=data_callback',\n",
" 'https://tech.163.com/special/00099BPN/game_newsdata_all_0{}.js?callback=data_callback']}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"这个不知道给的参考网址是用了urllib还是什么库来分解,我们结合一下老师的代码,先转化为字典再狠狠地扣标题,也就不判断网页是否成功加载了。<br>\n",
"不太行,大部分网页标题都加载不到10页,这样就会报错!!!<br>\n",
"我们直接一手re判断<!DOCTYPE HTML>部分及时终止"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"titles = []\n",
"categories = []\n",
"def get_result(URL, cat):\n",
" global titles, categories\n",
" temp = requests.get(URL)\n",
" if re.search(r'<!DOCTYPE HTML>', temp.text):\n",
" return False\n",
" news_list = eval(temp.text[14:-1])\n",
" for news in news_list:\n",
" titles.append(news['title'])\n",
" categories.append(cat)\n",
" return True"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"=========正在爬取国内新闻=========\n",
"=========正在爬取国际新闻=========\n",
"=========正在爬取财经新闻=========\n",
"=========正在爬取军事新闻=========\n",
"=========正在爬取游戏新闻=========\n",
"爬取完毕!\n"
]
}
],
"source": [
"for key in URL_list.keys():\n",
" # 讨厌没有边界感的条子\n",
" print(\"=========正在爬取{}新闻=========\".format(key))\n",
" # 要遍历每一个子链接\n",
" # 确实应该先获取首页\n",
" get_result(URL_list[key][0], key)\n",
" # 我发现其实是从2开始的,聪明逼是这样的\n",
" for i in range(2, 5):\n",
" get_result(URL_list[key][1].format(i), key)\n",
"print(\"爬取完毕!\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"保存数据,小子!"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['“北部·联合-2023”演习在即 专家:中俄在日本海演练有针对性和实战性', '王毅:美方应取消对华非法无理制裁', '中国海警驱离日非法进入我赤尾屿领海船只', '深圳9万套“双拼房”可“双证合一”?官方:以柜台审核为准', '中国大陆猴痘病例已达10例 科普来了', '长期任职地曾发生腐败窝案 退休5年的副部级周末落马', '31省最低工资标准公布 上海居首', '解放军防务战略磋商代表团访问英国和法国', '中国驻泰国大使:警惕别有用心的势力炒作灰产问题', '中国驻美大使谢锋向拜登递交国书']\n"
]
}
],
"source": [
"print(titles[:10])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"gbk写不进去,所以只好改成UTF-8编码"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"更新数据集ing\n",
"更新完毕,共有数据829条\n"
]
}
],
"source": [
"# 更新数据集的函数\n",
"def update(old, new):\n",
" data = new.append(old)\n",
" data = data.drop_duplicates()\n",
" return data\n",
"\n",
"new = pd.DataFrame({\n",
" \"新闻内容\":titles,\n",
" \"新闻类别\":categories\n",
"})\n",
"old = pd.read_csv(\"新闻数据集.csv\", encoding = 'UTF-8', engine = 'python')\n",
"print(\"更新数据集ing\")\n",
"df = update(old, new)\n",
"df.to_csv(\"新闻数据集.csv\", index = None, encoding = 'UTF-8')\n",
"print(\"更新完毕,共有数据{}条\".format(df.shape[0]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"可视化!"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, '各个类别新闻爬取数目统计')"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiIAAAHBCAYAAABUjNCbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA8g0lEQVR4nO3de3zP9f//8ft7p/cYdnSI1OZ8KCnRVIgU5VQhp8onJNUv9amWQ8VHh00HPtWHJGSI6hudpXJISkNDfGY5tkVO25htbHvb4fn7w9fra22U2jzZbtfL5XW57HV+vL1mr/v79Xq+ni+XMcYIAADAAi/bBQAAgIqLIAIAAKwhiAAAAGsIIgAAwBqCCAAAsIYgAgAArCGIAAAAawgiAADAGoII8L/y8vJsl4DfycvLU2Fhoe0yAJQhggjwvx555BH17Nnzb2/ntdde06pVq85qnczMzCLj06ZNU0JCgjO+atUqpaSkFFuvsLBQ33//fYnDgQMHii3/1VdfafDgwSXWsGXLFjVs2FA7d+4sNi8vL0+7d+/Wl19+qVGjRumBBx4oMj8nJ0f9+vXT2rVrJUnHjx9XTk6O/mzHzQUFBfrtt9+0ZcsWff7553rllVd05513qmbNmnrrrbf+1DZKQ25uriRp7dq1mjdvniTp6NGjzvxvvvlGhw8fPuM2CgsLlZ+f/6eG04WsY8eOlTg9Oztbzz//vPbu3XvGGvbu3XvabRcUFGj06NHasmXLGbcBnDMGgDl+/LipUaOGmTp16t/aTmJiovH29ja9evX60+scOHDAhIaGmnfeeceZVqtWLTN37lxjjDGpqammRo0apl+/fsXWLSgoMJKMr6+vcbvdziDJzJgxo9jysbGxpm7dus748ePHzaFDh8yxY8fM/v37jcvlMnPnzjUZGRkmLS3NHD9+3AwbNsy4XC7j5eVlatWqZa644gpz4403mh07dhTZ9uDBg02DBg1Mdna2mT17tpF0xuGLL75w1t2yZYuRZJo0aWLcbrfp3r27CQwMNOPGjTOvv/56ietfc801zvqzZs0yvXv3Nv369Ss23HbbbSYxMdGkpKSY9PT0IoPH43G2sX79elO/fn2zb98+M3HiRGf71113nYmNjTXGGHPJJZeYqKioMx7PoUOH/uFnPzk89thjJW7jgQceMG3bti1S38njffnll5u77777tPv3eDwmIiLC3HfffaddxsvLyyxZsuSMnwM4V7giAkh66623lJKSooceekgul6vYcOmllxb5ZlwSY4wefPBB1a5dW4sXL9by5cv/1L5r1qyp5557ToMHD3a+hXt7e8vX11cej0d33HGHwsPDNWvWrGLrenl5ycvLS19//bVyc3Od4dJLL5Wfn5/z2YYMGeJs18vr//7br169WqGhoQoICNBFF10kY4zuueceBQYGKiwsTOvXr5fH41G/fv3k8Xi0f/9+/fTTT1q2bJkaNGgg6cTVkJSUFE2bNk09evTQoUOH1K9fP6Wmpurw4cNKT08vNkhy6pMkf39/SVJ8fLzCw8P1+OOPq3r16rr22mt1zTXXKCQkROnp6bruuus0ffp0TZ06VW6321m/RYsWat68ub744gv16dNHffr00a233qr3339fnTp10pQpU1SjRg0FBwcXGd555x1nG1dddZXat2+vsWPHytfXV35+flq3bp22bt2qPn36KCUlRbt371afPn3OeDzdbrduuOEGZWVlnXGoV6+efH19i61/7Ngxvfvuu+rWrZv8/PyUlZWln3/+WUlJSdq9e7dGjBihRo0aKTk5WcnJydq+fbuSkpKc9f38/BQbG6t58+bp0UcfLbFGX19f+fj4nPFzAOcKv4mo8NLS0vTss8/q6quvlr+/vz777DNn3saNG9WlSxdNmzZNVapUOeN2YmJitGbNGsXHx2v27NkaMGCAVq5cqWbNmpW4fG5urnbt2iW3261bbrlF/fv315EjR5ScnKyCggKlpqZqw4YNSktL09tvv62UlBQdP35cVatWVe3atZ3tuFyuErd/MnCkpqZq69atJS7Ttm1bJScna8mSJerfv78kaevWrVq5cqX69u2runXrOuHldCeuhQsX6sknn9T+/fs1efJkZ3qlSpXO+O91ahA5eUI+9bO43W4dO3ZMNWvWlMvlUlBQkHx8fFS5cmXl5+cXqefqq6/W0aNHNXXqVCcoHDlyRJJ0++236+KLL9aMGTO0du1aXXnllZJOhJ9T/x0/+OADNWzYUP7+/lqzZo0OHDig7777Tr169dK7776rgIAABQUFqUGDBs628/PzVblyZVWuXNnZjpeXl7y9vf/w98XlcpX4bzp9+nSFhYUpKirK+R3o1auX3G63c6vLy8tLr7zyiiTJ4/Gobdu2WrFihbON9u3ba+bMmbr7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tGlYtWqVXC6XqlWrVmT55OTkIqFq5MiRatiwoZ577rkiNY8fP16TJk3Su+++qxtuuEEBAQGnrf1kO5RmzZpp8uTJ+uKLL5SQkKC0tDTl5eUpNTVVgYGBql+/fpEQUrVqVUnSsmXLtH37dqex7vHjx51bSfXr19d7772n999/X126dNH06dO1evVq7dixQxs2bHDag+Tk5CgrK0uzZs1SamqqPv30Uz344IPOvmbPnq2oqChNmDBBI0aM0MSJEzVy5EgNGTKkyBWaKlWqqHnz5kpKSlKTJk305ZdfyuVy6aefftKsWbPUqVMnjR8/XgEBAerQoUORJ6BOys/Pd9qInGnYtWtXsVtmDz30kPr376+1a9eqa9euio+P1+bNm/Xggw9q9erVTm+qJxsnb9myxXnM99R+Vfbv36/U1FQ98MADevPNN4u1Vzl5tQ84L5T522yAC8DJF8WdbqhTp86f3laLFi3M6NGj/3C5hIQE8+ijj5prrrnGuFwuExkZaeLi4oott3XrVtO1a1cjyTRo0MA899xzxhhjNm3aZNxut6lfv75JSkoyxhhz8OBB4+vraySZ2267zdnGZ599ZkJDQ40k07NnT2f6b7/9ZpKTk82CBQtMly5djCSzd+9eZ78+Pj7OC9+MMeb999831apVK1LftGnTTP369c/4Wf39/c2nn35qfvrpJ/P222+bO+64wxw/ftwYY8y6deuKvMTt/vvvN+vXry+y/sGDB81rr71mBg0aZK688kpz0UUXmSpVqjgv3svLyyu2z9TUVCPJrFq1ygQHB5uBAweawsJCZ/4TTzxhAgMDzebNm40xxsyfP99069bNVKlSxYwaNcpkZ2cbY4zZsGGDuf76601QUJB5//33jTHG7N271zRv3txUqVLFfPPNN0X2+8gjj5iePXsWe8He74eIiAjz+OOPF6v52LFjRaYNGjTIVKpUySxevNiZtnnzZhMWFmYkGR8fHzNx4sRin/+HH34o8nlPysvLM5LMp59+WmweYANBBDDGJCcnOyeev6tx48anfavqqdLS0kzr1q3NyJEjzZo1a/5w+dWrV5t//OMfRd5a+5///MekpqYWWe7dd98tdhLKzs42jz76qHnvvffM0aNHi217/fr15qqrrjIvvfSSM+2zzz4zV1xxRZE3wM6dO9e43e4/rPV00tLSip1oy8revXuNJLN161azdetWJ/j8fpmTli5dal544QVz8ODBIstkZmaaUaNGmQMHDhSZnp2dbaZNm1Y2xZ/iyJEjZtOmTWW+H8AWlzFcnwNQMmPMX3oMFQD+LNqIADgtQgiAskYQAQAA1hBEAACANQQRAABgzXnfxXthYaH27dunqlWrcr8aAIALhDFGWVlZql279hl7pT7vg8i+fftUt25d22UAAIC/YM+ePbr44otPO/+8DyIne1/cs2dPsV4iAQDA+SkzM1N169Z1zuOnc94HkZO3Y6pVq0YQAQDgAvNHzSporAoAAKwhiAAAAGsIIgAAwBqCCAAAsIYgAgAArCGIAAAAawgiAADAGoIIAACwhiACAACsIYgAAABrCCIAAMAagggAALCGIAIAAKwhiAAAAGsIIgAAwBof2wWcD8JHL7ZdQqlIntjNdgkAAJwVrogAAABrCCIAAMAagggAALCGIAIAAKwhiAAAAGsIIgAAwBqCCAAAsIYgAgAArCGIAAAAawgiAADAGoIIAACwhiACAACsIYgAAABrePsuzjvl4W3IvAkZAP4crogAAABrCCIAAMAagggAALCGIAIAAKwhiAAAAGsIIgAAwBqCCAAAsIYgAgAArCGIAAAAawgiAADAGoIIAACw5qyDyCeffKJ69erJx8dHLVu21M8//yxJSkhIUOvWrRUcHKyoqCgZY5x1vv32WzVt2lRhYWGaPHly6VUPAAAuaGcVRHbt2qV7771XEydO1N69e9WoUSMNGzZMHo9HPXr0UKtWrRQfH6/ExETFxsZKklJTU9WzZ08NGDBAcXFxmj9/vr755puy+CwAAOACc1ZB5Oeff9bEiRN15513qmbNmnrggQe0ceNGLVmyRBkZGZo8ebLq16+v6OhozZo1S5I0f/581a5dW88884waNmyocePGOfMAAEDF5nM2C3fv3r3I+LZt29SwYUNt2rRJkZGRqly5siSpRYsWSkxMlCRt2rRJHTt2lMvlkiS1adNGo0ePPu0+PB6PPB6PM56ZmXk2JQIAgAvIX26sevz4cU2aNEkjRoxQZmamIiIinHkul0ve3t5KT08vNq9atWrat2/fabcbExOjwMBAZ6hbt+5fLREAAJzn/nIQGT9+vAICAjRs2DD5+PjI7XYXme/v76/s7Oxi805OP50xY8YoIyPDGfbs2fNXSwQAAOe5s7o1c9KKFSs0depUrVmzRr6+vgoJCVFCQkKRZbKysuTn56eQkBClpqYWm346bre7WKgBAADl01lfEUlKStKAAQM0depUNWvWTJLUunVrxcXFFVnG4/EoJCSk2LyNGzeqTp06pVA6AAC40J1VEMnJyVH37t3Vq1cv3X777Tp69KiOHj2qdu3aKTMzU7Nnz5YkRUdHq3PnzvL29lbPnj21evVqLVu2THl5eXrppZfUpUuXMvkwAADgwnJWt2a+/vprJSYmKjExUTNmzHCmJyUlaebMmRowYICioqLk5eWllStXSpLCwsL073//W7feequqVKmioKAgp48RAABQsZ1VEOnVq1eRHlNPFR4erl27dmn9+vWKjIxUaGioM2/EiBHq0qWLtm7dqnbt2qlKlSp/r2oAAFAu/KXGqqdTq1YtdevWrcR5ERERRR7jBQAA4KV3AADAGoIIAACwhiACAACsIYgAAABrCCIAAMAagggAALCGIAIAAKwhiAAAAGsIIgAAwBqCCAAAsIYgAgAArCGIAAAAawgiAADAGoIIAACwhiACAACsIYgAAABrCCIAAMAagggAALCGIAIAAKwhiAAAAGsIIgAAwBqCCAAAsIYgAgAArCGIAAAAawgiAADAGoIIAACwhiACAACsIYgAAABrCCIAAMAagggAALCGIAIAAKwhiAAAAGsIIgAAwBqCCAAAsIYgAgAArCGIAAAAawgiAADAGoIIAACwhiACAACsIYgAAABrCCIAAMAagggAALCGIAIAAKwhiAAAAGsIIgAAwBqCCAAAsIYgAgAArCGIAAAAawgiAADAGoIIAACwhiACAACsIYgAAABrCCIAAMAagggAALCGIAIAAKwhiAAAAGsIIgAAwBqCCAAAsIYgAgAArCGIAAAAawgiAADAGoIIAACwhiACAACsIYgAAABrCCIAAMAagggAALCGIAIAAKwhiAAAAGsIIgAAwJqzDiJpaWmKiIhQcnKyM23kyJFyuVzO0KBBA2deQkKCWrdureDgYEVFRckYUyqFAwCAC99ZBZG0tDR17969SAiRpPj4eC1evFjp6elKT0/Xxo0bJUkej0c9evRQq1atFB8fr8TERMXGxpZW7QAA4AJ3VkGkf//+GjhwYJFp+fn52rJli9q3b6+goCAFBQWpatWqkqQlS5YoIyNDkydPVv369RUdHa1Zs2adcR8ej0eZmZlFBgAAUD6dVRCZMWOGRo4cWWTaf//7XxUWFqply5aqVKmSunbtqt27d0uSNm3apMjISFWuXFmS1KJFCyUmJp5xHzExMQoMDHSGunXrnk2JAADgAnJWQSQiIqLYtMTERDVu3Fjz5s3T5s2b5ePjo+HDh0uSMjMzi6zjcrnk7e2t9PT00+5jzJgxysjIcIY9e/acTYkAAOAC4vN3NzBo0CANGjTIGX/jjTcUERGhzMxM+fj4yO12F1ne399f2dnZCg4OLnF7bre72DoAAKB8KvXHd2vUqKHCwkLt379fISEhSk1NLTI/KytLfn5+pb1bAABwAfrbQSQqKkoLFixwxuPi4uTl5aW6deuqdevWiouLc+YlJSXJ4/EoJCTk7+4WAACUA3/71swVV1yhp59+WjVr1lRBQYEefvhh3XPPPapcubLat2+vzMxMzZ49W/fee6+io6PVuXNneXt7l0btAADgAve3g8hdd92lLVu2qHfv3vL29tZdd92l6OjoExv38dHMmTM1YMAARUVFycvLSytXrvy7uwQAAOXEXwoiv+8dNSYmRjExMSUu27NnT+3atUvr169XZGSkQkND/8ouAQBAOfS3r4j8GbVq1VK3bt3Oxa4AAMAFhJfeAQAAawgiAADAGoIIAACwhiACAACsIYgAAABrCCIAAMAagggAALCGIAIAAKw5Jx2aAbgwhY9ebLuEvy15YvnoTLE8HAup/BwPlB6uiAAAAGsIIgAAwBqCCAAAsIYgAgAArCGIAAAAawgiAADAGoIIAACwhiACAACsIYgAAABrCCIAAMAagggAALCGIAIAAKwhiAAAAGsIIgAAwBqCCAAAsIYgAgAArCGIAAAAawgiAADAGoIIAACwhiACAACsIYgAAABrCCIAAMAagggAALCGIAIAAKwhiAAAAGsIIgAAwBqCCAAAsIYgAgAArCGIAAAAawgiAADAGoIIAACwxsd2AQAAXEjCRy+2XUKpSJ7YzXYJkrgiAgAALCKIAAAAawgiAADAGoIIAACwhiACAACsIYgAAABrCCIAAMAagggAALCGIAIAAKwhiAAAAGsIIgAAwBqCCAAAsIYgAgAArCGIAAAAawgiAADAGoIIAACwhiACAACsIYgAAABrCCIAAMAagggAALCGIAIAAKwhiAAAAGsIIgAAwBqCCAAAsIYgAgAArCGIAAAAawgiAADAmrMO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sWVRNjgW54+goCDn51OPh6+vr/MzQeTcyczMNLNnzzbNmzc3HTp0cKY/+OCD9oo6x2gjUgYKCwuLXD4bOnSoWrdurVtuuUVVq1Y9bdsRlI0qVao4P1erVk0LFy5UvXr1VLlyZYtVVUwcC/tOfWrJ5XIpLi5Or776qgoLC52/TVlZWRo4cKBycnL00Ucf2Sq1Qqhataqee+45bd26VVu3blX//v1VqVIlSdKQIUMknXjqrE+fPuratavNUssMQaQUPfnkk3K73fL29ta1116rCRMmOA3wqlevrq+//loHDx5U69attXjxYtWoUcN2yRVCQUGBvvvuO+ex0MjISBljaJBnAcfCPmOMoqOjnfAXEBCgJk2ayOVyqXnz5pKkzz77TM2aNaOtThn75ZdflJGRodDQUPn6+uryyy/XihUrNGXKlCLtCrOysjR8+HDt3r3bYrVlhyBSiqZNm6YXX3zRecvoqb9INWrU0M8//6whQ4Zo/PjxhJBzyOPxKCYmRsYYHTlyRBMnTpQxhp4jLeBYnB8uvfRSjR8/XocPH1ZQUJAmTJig6Oho55UHr732mp5++mnLVZZv69atU+/evRUdHa1jx47p2WeflTFGBQUFznFp1KiRmjdvLrfbrbS0NBUWFp7xybMLFU/NlKLq1asrNTVVO3fu1Lhx41SrVi0FBAQoICBAl1xyifz9/RUQEKAuXbrYLrVCaNGihTZv3qzw8HDnHSan/lyvXj398ssvRZZF2eBYnD9O9uSZk5Ojiy66SFWrVtWXX36pK6+80unmnadmyt7JwFG9enU1adJEgwcPdjr1O3LkiNLT07V9+3Zt3bpV3bt315gxY5wrVuUNV0RK0cl7rzk5Obrsssvk5+cnY4wOHDign376SStWrFD79u3VsmVL1axZ03K1FUdWVpbz86mdzGVnZ9sop0LjWJw/KlWqJJfLpddff1233nqrCgoKlJGRUW577zzfeHt7q3r16lq1apUGDhyoMWPG6NixY/rtt9/UuHFjHT582AmN//73v3X99dcrISFBderUsV16qSOIlKLc3FzNnTtXUtG3VtasWVPXXXed5s6dq2effVatW7fWihUrnPdqoGw9++yzzs9ff/218/OVV15po5wKjWNhn8fj0ezZs1W7dm2NHj1at9xyi/Lz8zVr1iwVFhbKnHia0naZFcIbb7yhV199VRs3bpR04m272dnZmjdvnrp27aojR46oT58+6tWrl4YMGVIuQ4jErZlSdc8998jPz0/e3t7y8vKSMcZplBcYGKjJkydLkmJiYhQfH69FixZZrrh8q127tp544onTzj/ZlkeSJk2apN27d/P+nzLCsTh/REZGyu12q2XLlnrttdeKzc/JyVHNmjWVmZlpobqKo6CgQB06dNCMGTPUtGlTxcXFqXv37tq1a5eCgoJkjNHGjRu1ePFivfPOOzpw4IA2btyoevXq2S691BFELOESaNkbNmyY033y6U5q+fn5ysvLU15ent58802nq2WULo7FhWX37t28AdmC7du3q1GjRiXOW758uW688cZzXNG5QRABAADWlL/ngAAAwAWDIAIAAKwhiAAAAGsIIgAAwBqCCAAAsIYgAgAArCGIAAAAa/4/Yf8kVrO2r9sAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df.新闻类别.value_counts().plot(kind = 'bar')\n",
"plt.title(\"各个类别新闻爬取数目统计\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 数据清洗和分词\n",
"这个提供的CSDN文档写得很简洁很好啊,好东西,抄了!"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [],
"source": [
"def remov(line):\n",
" line = str(line)\n",
" if line.strip() == '':\n",
" return ''\n",
" rule = re.compile(u\"[^a-zA-Z0-9\\u4E00-\\u9FA5]\")\n",
" line = rule.sub('', line)\n",
" return line\n",
"\n",
"def stopcreater(filepath):\n",
" stop = [line.strip() for line in open(filepath, 'r', encoding = 'UTF-8').readlines()]\n",
" return stop\n",
"\n",
"#产生stoplist\n",
"stop = stopcreater('stoplist.txt')\n",
"#删除除了字母,数字,汉字以外的所有符号\n",
"df['clean_review'] = df['新闻内容'].apply(remov)\n",
"#分词,并过滤掉停用词\n",
"df['cut_review'] = df['clean_review'].apply(lambda x: ' '.join([w for w in list(jieba.cut(x)) if w not in stop]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"一套行云流水的转词向量接朴素贝叶斯模型"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"模型训练完毕!\n"
]
}
],
"source": [
"tfidf = TfidfVectorizer(norm = 'l2', ngram_range = (1, 2))\n",
"features = tfidf.fit_transform(df.cut_review)\n",
"labels = df.新闻类别\n",
"# 划分训练集\n",
"x_train, x_test, y_train, y_test = train_test_split(features, labels, test_size = 0.2, random_state = 0)\n",
"model = MultinomialNB().fit(x_train, y_train)\n",
"y_pred = model.predict(x_test)\n",
"print(\"模型训练完毕!\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 结果分析接可视化"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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CFy+fBl169aFi4tLntpmEkpEREQkIe/T2vFFixZF69at3+m97BNKRERERAbHSigRERGRhEipT6g+sRJKRERERAbHSigRERGRhLASSkRERESkJ6yEEhEREUnI+zQ6/r9gJZSIiIiIDI6VUCIiIiIJYZ9QIiIiIiI9YSWUiIiISELYJ5SIiIiISE9YCSUiIiKSEPYJJSIiIiLSE1ZCiYiIiCREBj33CdVf03nCSigRERERGRwroUREREQSIpfJINdjKVSfbecFK6FEREREZHCshBIRERFJCOcJJSIiIiLSE1ZCiYiIiCSE84QSEREREekJK6FEREREEiKXvdr02b4UsBJKRERERAbHSigRERGRlMj03G+TlVAiIiIiMlWshL7lcUIakrPMjR0GveGTPl8YOwTKQVyS2tghUA7sLPlrXYrCHyYZOwR6w8tkad8PzhNKRERERKQn/JOZiIiISEJkf/2jz/algJVQIiIiIjI4VkKJiIiIJITzhBIRERER6QkroUREREQSwrXjiYiIiIj0hJVQIiIiIgnhPKFERERERHrCSigRERGRhMhlMsj1WK7UZ9t5wUooERERERkcK6FEREREEsI+oUREREREesJKKBEREZGEcJ5QIiIiIiI9YSWUiIiISELYJ5SIiIiISE9YCSUiIiKSEM4TSkRERESkJ6yEEhEREUmI7K9Nn+1LASuhRERERGRwrIQSERERSQjnCSUiIiIi0hNWQomIiIgkRC57temzfSlgJZSIiIiIDI6VUCIiIiIJYZ/Qt6Snp2PYsGE6+yIiItClS5cczyUiIiIi+ju5TkLNzMywc+dOnX2hoaHZEs7MzEzY2trmT3REREREJuj1+vH62KQi10moTCZDQkICypYti1OnTgEA9u7di86dO+Phw4eIjY0FACiVSpiZmeknWiIiIiIqEHLVJzQlJQXr16+HtbU1duzYgYoVKyIxMREHDx5EXFwcEhMT8f3336NLly7o168fzM3N9R03ERERUYHEPqFviIqKwpQpU5CWlqZNMGfPno2vv/4a+/fvx+DBgxEeHo7KlSvjq6++QlZWll6DJiIiIqL3W66S0IoVKyIiIgKjR4/GRx99hN27d2P//v349ttvYWVlBQDw8PDAsGHDcPPmTSiVHHRPRERE9C5ezxOqz00Kct0n9MGDB1CpVNi5cyd69OiByZMna6ui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iIiIiEyMqYyOz3USqlQqMXPmzL89rlAosH37dgBAuXLl/ntkRERERFRgvVOf0JzIZDI0a9Ysv5ojIiIiMkn6HsH+3o6OJyIiIiL6r/KtEkpERERE/53sr3/02b4UsBJKRERERAbHSigRERGRhLBPKBERERGRnrASSkRERCQhrIQSEREREekJK6FEREREEiKTySDT69rx0iiFshJKRERERAbHSigRERGRhLBPKBERERGRnrASSkRERCQhMtmrTZ/tSwEroURERERkcKyEEhEREUmIXCaDXI/lSn22nReshBIRERGRwbESSkRERCQhHB1PRERERKQnrIQSERERSYmeR8eDlVAiIiIiMlWshBIRERFJiBwyyPVYrtRn23nBJPQtpQrbwN7exthh0BsalnUxdgiUg0J2FsYOgXKgSs0wdgiUg5txicYOgd6Q+jLJ2CEQmIQSERERSQpXTCIiIiIi0hNWQomIiIgkhPOEEhERERHpCSuhRERERBLCteOJiIiIiPSElVAiIiIiCeHoeCIiIiIiPWEllIiIiEhC5NBzn1CJrJjESigRERERGRwroUREREQSwj6hRERERER6wkooERERkYTIod8qoVQqkFKJg4iIiIhMCCuhRERERBIik8kg02PHTX22nReshBIRERGRwbESSkRERCQhsr82fbYvBayEEhEREZHBsRJKREREJCFymZ5XTGKfUCIiIiIyVayEEhEREUmMNGqV+sVKKBEREREZHCuhRERERBLCteOJiIiIiPSElVAiIiIiCeGKSUREREREesJKKBEREZGEyKHfKqFUKpBSiYOIiIiITAgroUREREQSwj6hREREREQA4uLi4OnpiaioKO2+kJAQ1K5dG05OTvD19YUQIk9tMgklIiIikhCZAba8iIuLQ5s2bXQSULVajbZt26JmzZq4dOkSwsLCsGrVqjy1yySUiIiIiP5W165d0b17d519+/btQ2JiImbPng0vLy/4+/tj5cqVeWqXfUKJiIiIJMRQfUJVKpXOfgsLC1hYWGQ7f/ny5fD09MR3332n3Xf9+nXUrVsX1tbWAAAfHx+EhYXlKQ5WQomIiIhMkJubGxwcHLRbQEBAjud5enpm26dSqXT2y2QyKBQKxMfH5/rzWQklIiIikhBDzRMaExMDe3t77f6cqqB/R6lUZjvf0tISKSkpcHJyyl0buf40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",
"text/plain": [
"<Figure size 800x600 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"分类评估报告如下:\n",
"\n",
" precision recall f1-score support\n",
"\n",
" 军事 0.65 0.39 0.49 28\n",
" 国内 0.32 0.91 0.48 32\n",
" 国际 1.00 0.09 0.16 35\n",
" 游戏 0.67 0.07 0.13 27\n",
" 财经 0.57 0.68 0.62 44\n",
"\n",
" accuracy 0.45 166\n",
" macro avg 0.64 0.43 0.37 166\n",
"weighted avg 0.64 0.45 0.39 166\n",
"\n"
]
}
],
"source": [
"def plot_confusion_matrix(cm, classes,\n",
" normalize = False,\n",
" title = 'Confusion matrix',\n",
" cmap = plt.cm.Blues):\n",
" plt.figure(figsize = (8, 6))\n",
" plt.imshow(cm, interpolation='nearest', cmap=cmap)\n",
" plt.title(title)\n",
" plt.colorbar()\n",
" tick_marks = np.arange(len(classes))\n",
" plt.xticks(tick_marks, classes, rotation=45)\n",
" plt.yticks(tick_marks, classes)\n",
"\n",
" fmt = '.2f' if normalize else 'd'\n",
" thresh = cm.max() / 2.\n",
" for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):\n",
" plt.text(j, i, format(cm[i, j], fmt),\n",
" horizontalalignment=\"center\",\n",
" color = \"white\" if cm[i, j] > thresh else \"black\")\n",
"\n",
" plt.tight_layout()\n",
" plt.ylabel('真实标签')\n",
" plt.xlabel('预测标签')\n",
" plt.show()\n",
"class_names = list(URL_list.keys())\n",
"cm = confusion_matrix(y_test, y_pred)\n",
"title = \"分类准确率:{:.2f}%\".format(accuracy_score(y_test,y_pred)*100)\n",
"plot_confusion_matrix(cm,classes=class_names,title=title)\n",
"print(\"分类评估报告如下:\\n\")\n",
"print(classification_report(y_test,y_pred))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "DL",
"language": "python",
"name": "dl"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.16"
}
},
"nbformat": 4,
"nbformat_minor": 2
}