{
?"cells": [
? {
? ?"cell_type": "markdown",
? ?"id": "423eac66",
? ?"metadata": {},
? ?"source": [
? ? "## Step1: 爬取京东评论,作为模型数据集"
? ?]
? },
? {
? ?"cell_type": "markdown",
? ?"id": "7f41834d",
? ?"metadata": {},
? ?"source": [
? ? "爬取10个京东商品的评论信息,每个商品爬取1000条,其中好评信息爬取6000条,差评信息爬取4000条。\n",
? ? "\n",
? ? "作为本次评论情感分析的**数据集**。"
? ?]
? },
? {
? ?"cell_type": "markdown",
? ?"id": "f83461b9",
? ?"metadata": {},
? ?"source": [
? ? "### 测试爬虫"
? ?]
? },
? {
? ?"cell_type": "code",
? ?"execution_count": 4,
? ?"id": "837aad75",
? ?"metadata": {
? ? "scrolled": false
? ?},
? ?"outputs": [
? ? {
? ? ?"ename": "ProxyError",
? ? ?"evalue": "HTTPSConnectionPool(host='club.jd.com', port=443): Max retries exceeded with url: /comment/productPageComments.action?callback=fetchJSON_comment98&productId=100021771660&score=2&sortType=5&page=99&pageSize=10&isShadowSku=0&fold=1 (Caused by ProxyError('Cannot connect to proxy.', OSError(0, 'Error')))",
? ? ?"output_type": "error",
? ? ?"traceback": [
? ? ? "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
? ? ? "\u001b[1;31mOSError\u001b[0m ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Traceback (most recent call last)",
? ? ? "\u001b[1;32me:\\python\\lib\\site-packages\\urllib3\\connectionpool.py\u001b[0m in \u001b[0;36murlopen\u001b[1;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)\u001b[0m\n\u001b[0;32m ? ?699\u001b[0m ? ? ? ? ? ? \u001b[1;32mif\u001b[0m \u001b[0mis_new_proxy_conn\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mhttp_tunnel_required\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 700\u001b[1;33m ? ? ? ? ? ? ? ? \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_prepare_proxy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mconn\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m ? ?701\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
? ? ? "\u001b[1;32me:\\python\\lib\\site-packages\\urllib3\\connectionpool.py\u001b[0m in \u001b[0;36m_prepare_proxy\u001b[1;34m(self, conn)\u001b[0m\n\u001b[0;32m ? ?993\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 994\u001b[1;33m ? ? ? ? \u001b[0mconn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m ? ?995\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
? ? ? "\u001b[1;32me:\\python\\lib\\site-packages\\urllib3\\connection.py\u001b[0m in \u001b[0;36mconnect\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m ? ?363\u001b[0m ? ? ? ? ? ? \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtls_in_tls_required\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 364\u001b[1;33m ? ? ? ? ? ? ? ? \u001b[0mconn\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_connect_tls_proxy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mhostname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mconn\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m ? ?365\u001b[0m ? ? ? ? ? ? ? ? \u001b[0mtls_in_tls\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
? ? ? "\u001b[1;32me:\\python\\lib\\site-packages\\urllib3\\connection.py\u001b[0m in \u001b[0;36m_connect_tls_proxy\u001b[1;34m(self, hostname, conn)\u001b[0m\n\u001b[0;32m ? ?506\u001b[0m ? ? ? ? ? ? \u001b[0mserver_hostname\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mhostname\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 507\u001b[1;33m ? ? ? ? ? ? \u001b[0mssl_context\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mssl_context\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m ? ?508\u001b[0m ? ? ? ? )\n",
? ? ? "\u001b[1;32me:\\python\\lib\\site-packages\\urllib3\\util\\ssl_.py\u001b[0m in \u001b[0;36mssl_wrap_socket\u001b[1;34m(sock, keyfile, certfile, cert_reqs, ca_certs, server_hostname, ssl_version, ciphers, ssl_context, ca_cert_dir, key_password, ca_cert_data, tls_in_tls)\u001b[0m\n\u001b[0;32m ? ?452\u001b[0m ? ? \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 453\u001b[1;33m ? ? ? ? \u001b[0mssl_sock\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_ssl_wrap_socket_impl\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msock\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcontext\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtls_in_tls\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m ? ?454\u001b[0m ? ? \u001b[1;32mreturn\u001b[0m \u001b[0mssl_sock\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
? ? ? "\u001b[1;32me:\\python\\lib\\site-packages\\urllib3\\util\\ssl_.py\u001b[0m in \u001b[0;36m_ssl_wrap_socket_impl\u001b[1;34m(sock, ssl_context, tls_in_tls, server_hostname)\u001b[0m\n\u001b[0;32m ? ?494\u001b[0m ? ? \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 495\u001b[1;33m ? ? ? ? \u001b[1;32mreturn\u001b[0m \u001b[0mssl_context\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwrap_socket\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msock\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
? ? ? "\u001b[1;32me:\\python\\lib\\ssl.py\u001b[0m in \u001b[0;36mwrap_socket\u001b[1;34m(self, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname, session)\u001b[0m\n\u001b[0;32m ? ?411\u001b[0m ? ? ? ? ? ? \u001b[0mcontext\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 412\u001b[1;33m ? ? ? ? ? ? \u001b[0msession\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msession\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m ? ?413\u001b[0m ? ? ? ? )\n",
? ? ? "\u001b[1;32me:\\python\\lib\\ssl.py\u001b[0m in \u001b[0;36m_create\u001b[1;34m(cls, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname, context, session)\u001b[0m\n\u001b[0;32m ? ?852\u001b[0m ? ? ? ? ? ? ? ? ? ? ? ? \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"do_handshake_on_connect should not be specified for non-blocking sockets\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 853\u001b[1;33m ? ? ? ? ? ? ? ? ? ? \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdo_handshake\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m ? ?854\u001b[0m ? ? ? ? ? ? \u001b[1;32mexcept\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mOSError\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
? ? ? "\u001b[1;32me:\\python\\lib\\ssl.py\u001b[0m in \u001b[0;36mdo_handshake\u001b[1;34m(self, block)\u001b[0m\n\u001b[0;32m ? 1116\u001b[0m ? ? ? ? ? ? ? ? \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msettimeout\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1117\u001b[1;33m ? ? ? ? ? ? \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdo_handshake\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m ? 1118\u001b[0m ? ? ? ? \u001b[1;32mfinally\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
? ? ? "\u001b[1;31mOSError\u001b[0m: [Errno 0] Error",
? ? ? "\nDuring handling of the above exception, another exception occurred:\n",
? ? ? "\u001b[1;31mMaxRetryError\u001b[0m ? ? ? ? ? ? ? ? ? ? ? ? ? ? Traceback (most recent call last)",
? ? ? "\u001b[1;32me:\\python\\lib\\site-packages\\requests\\adapters.py\u001b[0m in \u001b[0;36msend\u001b[1;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[0;32m ? ?448\u001b[0m ? ? ? ? ? ? ? ? ? ? \u001b[0mretries\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmax_retries\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 449\u001b[1;33m ? ? ? ? ? ? ? ? ? ? \u001b[0mtimeout\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m ? ?450\u001b[0m ? ? ? ? ? ? ? ? )\n",
? ? ? "\u001b[1;32me:\\python\\lib\\site-packages\\urllib3\\connectionpool.py\u001b[0m in \u001b[0;36murlopen\u001b[1;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)\u001b[0m\n\u001b[0;32m ? ?785\u001b[0m ? ? ? ? ? ? retries = retries.increment(\n\u001b[1;32m--> 786\u001b[1;33m ? ? ? ? ? ? ? ? \u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0merror\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0me\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0m_pool\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0m_stacktrace\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msys\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexc_info\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m ? ?787\u001b[0m ? ? ? ? ? ? )\n",
? ? ? "\u001b[1;32me:\\python\\lib\\site-packages\\urllib3\\util\\retry.py\u001b[0m in \u001b[0;36mincrement\u001b[1;34m(self, method, url, response, error, _pool, _stacktrace)\u001b[0m\n\u001b[0;32m ? ?591\u001b[0m ? ? ? ? \u001b[1;32mif\u001b[0m \u001b[0mnew_retry\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mis_exhausted\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 592\u001b[1;33m ? ? ? ? ? ? \u001b[1;32mraise\u001b[0m \u001b[0mMaxRetryError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0m_pool\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0merror\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0mResponseError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcause\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m ? ?593\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
? ? ? "\u001b[1;31mMaxRetryError\u001b[0m: HTTPSConnectionPool(host='club.jd.com', port=443): Max retries exceeded with url: /comment/productPageComments.action?callback=fetchJSON_comment98&productId=100021771660&score=2&sortType=5&page=99&pageSize=10&isShadowSku=0&fold=1 (Caused by ProxyError('Cannot connect to proxy.', OSError(0, 'Error')))",
? ? ? "\nDuring handling of the above exception, another exception occurred:\n",
? ? ? "\u001b[1;31mProxyError\u001b[0m ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Traceback (most recent call last)",
? ? ? "\u001b[1;32m~\\AppData\\Local\\Temp\\ipykernel_19416\\1151651309.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m ? ? 24\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m ? ? 25\u001b[0m \u001b[1;31m#获取响应,并分析响应内容\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 26\u001b[1;33m \u001b[0mresponse\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mrequests\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0murl\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mparams\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mheaders\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m ? ? 27\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m ? ? 28\u001b[0m \u001b[1;31m#拆分京东返回的响应数据,得到json类型数据\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
? ? ? "\u001b[1;32me:\\python\\lib\\site-packages\\requests\\api.py\u001b[0m in \u001b[0;36mget\u001b[1;34m(url, params, **kwargs)\u001b[0m\n\u001b[0;32m ? ? 74\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m ? ? 75\u001b[0m ? ? \u001b[0mkwargs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msetdefault\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'allow_redirects'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 76\u001b[1;33m ? ? \u001b[1;32mreturn\u001b[0m \u001b[0mrequest\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'get'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mparams\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m ? ? 77\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m ? ? 78\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
? ? ? "\u001b[1;32me:\\python\\lib\\site-packages\\requests\\api.py\u001b[0m in \u001b[0;36mrequest\u001b[1;34m(method, url, **kwargs)\u001b[0m\n\u001b[0;32m ? ? 59\u001b[0m ? ? \u001b[1;31m# cases, and look like a memory leak in others.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m ? ? 60\u001b[0m ? ? \u001b[1;32mwith\u001b[0m \u001b[0msessions\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mSession\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0msession\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 61\u001b[1;33m ? ? ? ? \u001b[1;32mreturn\u001b[0m \u001b[0msession\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0murl\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m ? ? 62\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m ? ? 63\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
? ? ? "\u001b[1;32me:\\python\\lib\\site-packages\\requests\\sessions.py\u001b[0m in \u001b[0;36mrequest\u001b[1;34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001b[0m\n\u001b[0;32m ? ?540\u001b[0m ? ? ? ? }\n\u001b[0;32m ? ?541\u001b[0m ? ? ? ? \u001b[0msend_kwargs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msettings\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 542\u001b[1;33m ? ? ? ? \u001b[0mresp\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mprep\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0msend_kwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m ? ?543\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m ? ?544\u001b[0m ? ? ? ? \u001b[1;32mreturn\u001b[0m \u001b[0mresp\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
? ? ? "\u001b[1;32me:\\python\\lib\\site-packages\\requests\\sessions.py\u001b[0m in \u001b[0;36msend\u001b[1;34m(self, request, **kwargs)\u001b[0m\n\u001b[0;32m ? ?653\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m ? ?654\u001b[0m ? ? ? ? \u001b[1;31m# Send the request\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 655\u001b[1;33m ? ? ? ? \u001b[0mr\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0madapter\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mrequest\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m ? ?656\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m ? ?657\u001b[0m ? ? ? ? \u001b[1;31m# Total elapsed time of the request (approximately)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
? ? ? "\u001b[1;32me:\\python\\lib\\site-packages\\requests\\adapters.py\u001b[0m in \u001b[0;36msend\u001b[1;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[0;32m ? ?508\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m ? ?509\u001b[0m ? ? ? ? ? ? \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0me\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreason\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0m_ProxyError\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 510\u001b[1;33m ? ? ? ? ? ? ? ? \u001b[1;32mraise\u001b[0m \u001b[0mProxyError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0me\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrequest\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mrequest\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m ? ?511\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m ? ?512\u001b[0m ? ? ? ? ? ? \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0me\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreason\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0m_SSLError\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
? ? ? "\u001b[1;31mProxyError\u001b[0m: HTTPSConnectionPool(host='club.jd.com', port=443): Max retries exceeded with url: /comment/productPageComments.action?callback=fetchJSON_comment98&productId=100021771660&score=2&sortType=5&page=99&pageSize=10&isShadowSku=0&fold=1 (Caused by ProxyError('Cannot connect to proxy.', OSError(0, 'Error')))"
? ? ?]
? ? }
? ?],
? ?"source": [
? ? "import requests\n",
? ? "import json\n",
? ? "\n",
? ? "\n",
? ? "#获取评论请求地址\n",
? ? "url = 'https://club.jd.com/comment/productPageComments.action'\n",
? ? "\n",
? ? "#请求参数\n",
? ? "params = {\n",
? ? " ? ?'callback': 'fetchJSON_comment98',\n",
? ? " ? ?'productId': '100021771660',\n",
? ? " ? ?'score': '2', ? ? ? ? ? ?#类型代表差评\n",
? ? " ? ?'sortType': '5', ? ? ? ? #默认排序\n",
? ? " ? ?'page': '99', ? ? ? ? ? ?#第99页数据\n",
? ? " ? ?'pageSize': '10',\n",
? ? " ? ?'isShadowSku': '0',\n",
? ? " ? ?'fold': '1',\n",
? ? "}\n",
? ? "\n",
? ? "#请求头参数,反反爬策略 UA 伪装\n",
? ? "headers = {\n",
? ? " ? ?'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'\n",
? ? "}\n",
? ? "\n",
? ? "#获取响应,并分析响应内容\n",
? ? "response = requests.get(url = url, params=params, headers=headers)\n",
? ? "\n",
? ? "#拆分京东返回的响应数据,得到json类型数据\n",
? ? "data_json = response.text.replace('fetchJSON_comment98(', '')[:-2]\n",
? ? "\n",
? ? "#将json字符串加载为 python的对象中\n",
? ? "data = json.loads(data_json)\n",
? ? "\n",
? ? "good_comments = []\n",
? ? "\n",
? ? "for comment in data['comments']:\n",
? ? " ? ?\n",
? ? " ? ?#生成每条评论以及它的标签, 0代表好评, 1代表差评\n",
? ? " ? ?comments = [comment['content'].replace('\\n', ''), '0']\n",
? ? " ? ?\n",
? ? " ? ?good_comments.append(comments)\n",
? ? "\n",
? ? "print(good_comments)\n",
? ? "\n"
? ?]
? },
? {
? ?"cell_type": "markdown",
? ?"id": "ff68dd81",
? ?"metadata": {},
? ?"source": [
? ? "### 爬取6000条好评信息作为数据集,并存储为CSV文件"
? ?]
? },
? {
? ?"cell_type": "markdown",
? ?"id": "9a02be67",
? ?"metadata": {},
? ?"source": [
? ? "商品链接分别为:(每个商品爬取1000条评论)\n",
? ? "\n",
? ? "[Apple MacBook Pro 13.3 八核M1芯片 8G 256G SSD 深空灰 笔记本电脑 轻薄本 MYD82CH/A](https://item.jd.com/100009464821.html#none)\n",
? ? "\n",
? ? "\n",
? ? "[联想笔记本电脑小新Pro14 英特尔Evo平台 14英寸游戏轻薄本(标压i5 16G 512G 2.8K 90Hz护眼屏)全面屏办公本](https://item.jd.com/100014546493.html#none)\n",
? ? "\n",
? ? "[华为笔记本电脑MateBook D 14 2022款 14英寸 11代酷睿 i5 16G+512G 锐炬显卡 轻薄本/护眼全面屏 银](https://item.jd.com/100016960357.html#none)\n",
? ? "\n",
? ? "[联想ThinkBook 14+ 英特尔酷睿i5 笔记本电脑全新2022款 14英寸标压轻薄本i5-12500H 16G 512G 2.8K 90Hz](https://item.jd.com/100020078921.html#none)\n",
? ? "\n",
? ? "[荣耀MagicBook 16 16.1英寸高性能标压轻薄笔记本电脑(R7-5800H 16+512G 144Hz高刷)冰河银](https://item.jd.com/100014373845.html#none)\n",
? ? "\n",
? {
? ?"cell_type": "code",
? ?"execution_count": 27,
? ?"id": "ef3f2b5d",
? ?"metadata": {},
? ?"outputs": [
? ? {
? ? ?"name": "stdout",
? ? ?"output_type": "stream",
? ? ?"text": [
? ? ? "(7500, 12747)\n",
? ? ? "(7500,)\n",
? ? ? "(2500, 12747)\n",
? ? ? "(2500,)\n"
? ? ?]
? ? }
? ?],
? ?"source": [
? ? "X = np.array(X) ? ? ? ? ? ? ? #转化为numpy数组,X作为输入项,即评论生成的向量\n",
? ? "y = np.array(y) ? ? ? ? ? ? ? #转化为numpy数组,X作为输出项,即评论的类别\n",
? ? "\n",
? ? "#X_train,y_train为训练集数据\n",
? ? "#X_test,y_test为测试集数据\n",
? ? "X_train, X_test, y_train, y_test = train_test_split(X, y) ? ? ? ? ? ?#使用sklearn库的随即切分函数,将X、y划分为训练集与测试集\n",
? ? "\n",
? ? "\n",
? ? "#分别输出训练集的 X, y形状, 测试集的X, y的形状\n",
? ? "print(X_train.shape)\n",
? ? "print(y_train.shape)\n",
? ? "print(X_test.shape)\n",
? ? "print(y_test.shape)"
? ?]
? },
? {
? ?"cell_type": "markdown",
? ?"id": "fc5beac9",
? ?"metadata": {},
? ?"source": [
? ? "## Step6: 以朴素贝叶斯算法构建模型、训练模型"
? ?]
? },
? {
? ?"cell_type": "markdown",
? ?"id": "7125fbd7",
? ?"metadata": {},
? ?"source": [
? ? "这一段代码可能是最难理解的一段代码,因为此处涉及到**朴素贝叶斯模型**算法。"
? ?]
? },
? {
? ?"cell_type": "markdown",
? ?"id": "7b343aae",
? ?"metadata": {},
? ?"source": [
? ? "注意观察朴素贝叶斯算法:"
? ?]
? },
? ? ? "强大/外观/运行/速度/很快/电脑/购买/中/很漂亮/处理器/硬盘/内存/惊喜/轻松/希望/失望/固态/过程/带来/应对/大学/生活/认准/\n",
? ? ? "\n",
? ? ? "Predict result : 好评\tActual results: 好评\tPredict success!\t\n",
? ? ? "\n",
? ? ? "\n",
? ? ? "性能/外观/好看/电脑/满意/买/喜欢/笔记本电脑/感受/刚刚/重量/大型/游戏/尺寸/平时/太多/学生/太重/电视剧/惠普/粉红色/\n",
? ? ? "\n",
? ? ? "Predict result : 好评\tActual results: 好评\tPredict success!\t\n",
? ? ? "\n",
? ? ? "\n",
? ? ? "外观/屏幕/不错/效果/外形/轻薄/程度/合适/体验/清晰/喜欢/适合/感/轻便/学习/耐心/比较满意/女生/追剧/客服/小游戏/\n",
? ? ? "\n",
? ? ? "Predict result : 好评\tActual results: 好评\tPredict success!\t\n",
? ? ? "\n",
? ? ? "\n",
? ? ? "颜色/京东/物流/轻薄/特别/电脑/系统/笔记本电脑/选/服务态度/一如既往/手感/开机/高大/机身/没得说/耐心/自带/客服/联想/windows11/激活/产品包装/步骤/即可/\n",
? ? ? "\n",
? ? ? "Predict result : 好评\tActual results: 好评\tPredict success!\t\n",
? ? ? "\n",
? ? ? "\n",
?
......
?