From 64a607e50b6667c7a0d4317a4ca2d5b07b15fadf Mon Sep 17 00:00:00 2001 From: wufayuan <2858767122@qq.com> Date: Sat, 9 Apr 2022 10:12:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A2=B3=E7=90=86=E4=BA=86=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dcs/dcs.log | 76 ++++++++++++++++++++++++++++++ dcs/tests/client.py | 63 ++++++++++++++----------- dcs/tests/config.py | 49 ++++++++----------- dcs/tests/database.py | 40 +++++++++++----- dcs/tests/spider.py | 52 ++++++++++++++++++++ docs/pictures/项目结构图.pdf | Bin 0 -> 51095 bytes 6 files changed, 211 insertions(+), 69 deletions(-) create mode 100644 docs/pictures/项目结构图.pdf diff --git a/dcs/dcs.log b/dcs/dcs.log index cda7b3d..ee05eef 100644 --- a/dcs/dcs.log +++ b/dcs/dcs.log @@ -457,3 +457,79 @@ 2022-03-31 21:16:06.700 | INFO | __main__::16 - starting the server... 2022-03-31 21:16:08.706 | INFO | dcs.tests.user_request_handler:report_state:26 - [REQUEST] report free 2022-03-31 21:16:08.707 | INFO | dcs.tests.user_request_handler:report_state:32 - [RESPONSE] report free: success marked 2b0fd361bbf0b986fbc20d989a224d66fe9cb13a +2022-03-31 21:56:03.819 | INFO | __main__::9 - reading config args... +2022-03-31 21:56:03.820 | INFO | __main__::16 - starting the server... +2022-03-31 21:56:06.132 | INFO | dcs.tests.user_request_handler:report_state:26 - [REQUEST] report free +2022-03-31 21:56:06.132 | INFO | dcs.tests.user_request_handler:report_state:32 - [RESPONSE] report free: success marked 2b0fd361bbf0b986fbc20d989a224d66fe9cb13a +2022-03-31 21:56:14.117 | INFO | dcs.tests.requestHandler:crawl_zhiwang:46 - [REQUEST] crawl zhiwang +2022-03-31 21:56:14.117 | INFO | dcs.tests.spider:run:104 - crawling... +2022-03-31 21:59:43.973 | INFO | __main__::9 - reading config args... +2022-03-31 21:59:43.974 | INFO | __main__::16 - starting the server... +2022-03-31 21:59:47.613 | INFO | dcs.tests.user_request_handler:login:35 - [REQUEST] login +2022-03-31 21:59:47.643 | INFO | dcs.tests.user_request_handler:login:42 - [RESPONSE] login: None +2022-03-31 22:00:10.219 | INFO | __main__::9 - reading config args... +2022-03-31 22:00:10.220 | INFO | __main__::16 - starting the server... +2022-03-31 22:00:13.984 | INFO | dcs.tests.user_request_handler:login:35 - [REQUEST] login +2022-03-31 22:00:14.029 | INFO | dcs.tests.user_request_handler:login:42 - [RESPONSE] login: 6b95f1badcff627f56e1d1b2b436a66e9d668179 +2022-03-31 22:00:22.738 | INFO | dcs.tests.user_request_handler:login:35 - [REQUEST] login +2022-03-31 22:00:22.779 | INFO | dcs.tests.user_request_handler:login:42 - [RESPONSE] login: 2a17833fb66e33e37c5b893f4d11054ba660f39a +2022-03-31 22:00:25.994 | INFO | dcs.tests.user_request_handler:login:35 - [REQUEST] login +2022-03-31 22:00:26.023 | INFO | dcs.tests.user_request_handler:login:42 - [RESPONSE] login: 012f698322e6cd67d75c8bc91f6a9058f9262337 +2022-04-01 08:15:26.267 | INFO | __main__::9 - reading config args... +2022-04-01 08:15:26.268 | INFO | __main__::16 - starting the server... +2022-04-01 08:15:39.570 | INFO | dcs.tests.user_request_handler:login:35 - [REQUEST] login +2022-04-01 08:15:39.594 | INFO | dcs.tests.user_request_handler:login:42 - [RESPONSE] login: 7afecad3195f6b790418127316607238198b8193 +2022-04-01 08:16:31.391 | INFO | __main__::9 - reading config args... +2022-04-01 08:16:31.394 | INFO | __main__::16 - starting the server... +2022-04-01 08:16:35.093 | INFO | dcs.tests.user_request_handler:login:35 - [REQUEST] login +2022-04-01 08:16:35.100 | INFO | dcs.tests.user_request_handler:login:42 - [RESPONSE] login: 23eb3a72fb6e9eac029ed47356e4eff0e394768f +2022-04-01 08:17:07.484 | INFO | __main__::9 - reading config args... +2022-04-01 08:17:07.487 | INFO | __main__::16 - starting the server... +2022-04-01 08:17:26.291 | INFO | dcs.tests.user_request_handler:login:35 - [REQUEST] login +2022-04-01 08:19:48.255 | INFO | dcs.tests.user_request_handler:login:42 - [RESPONSE] login: 9825b67537b1e2a589ff2570f033d74f33fbaf84 +2022-04-01 08:29:59.684 | INFO | __main__::9 - reading config args... +2022-04-01 08:29:59.685 | INFO | __main__::16 - starting the server... +2022-04-01 08:30:03.578 | INFO | dcs.tests.user_request_handler:report_state:26 - [REQUEST] report free +2022-04-01 08:30:03.578 | INFO | dcs.tests.user_request_handler:report_state:32 - [RESPONSE] report free: success marked 2b0fd361bbf0b986fbc20d989a224d66fe9cb13a +2022-04-01 08:30:03.579 | INFO | dcs.tests.user_request_handler:login:35 - [REQUEST] login +2022-04-01 08:30:03.618 | INFO | dcs.tests.user_request_handler:login:42 - [RESPONSE] login: 93f0363797d703e85fd8b7f216b2cc3cd33e234d +2022-04-01 08:30:03.618 | INFO | dcs.tests.user_request_handler:report_state:26 - [REQUEST] report free +2022-04-01 08:30:03.619 | INFO | dcs.tests.user_request_handler:report_state:32 - [RESPONSE] report free: success marked 2b0fd361bbf0b986fbc20d989a224d66fe9cb13a +2022-04-01 08:30:03.619 | INFO | dcs.tests.server:run:36 - [REQUEST] end +2022-04-01 08:30:03.620 | WARNING | dcs.tests.server:run:37 - communication over! +2022-04-01 08:30:03.620 | WARNING | __main__::22 - Overing... +2022-04-01 08:41:16.250 | INFO | __main__::9 - reading config args... +2022-04-01 08:41:16.251 | INFO | __main__::16 - starting the server... +2022-04-01 08:41:19.564 | INFO | dcs.tests.user_request_handler:login:35 - [REQUEST] login +2022-04-01 08:41:19.578 | INFO | dcs.tests.user_request_handler:login:42 - [RESPONSE] login: 40456734e87596bb849caa4554a2283a27b6e871 +2022-04-01 08:41:19.579 | INFO | dcs.tests.user_request_handler:report_state:26 - [REQUEST] report free +2022-04-01 08:41:19.580 | INFO | dcs.tests.user_request_handler:report_state:32 - [RESPONSE] report free: success marked 40456734e87596bb849caa4554a2283a27b6e871 +2022-04-01 08:41:19.581 | INFO | dcs.tests.user_request_handler:report_state:26 - [REQUEST] report free +2022-04-01 08:41:19.581 | INFO | dcs.tests.user_request_handler:report_state:32 - [RESPONSE] report free: success marked 40456734e87596bb849caa4554a2283a27b6e871 +2022-04-01 08:41:19.581 | INFO | dcs.tests.server:run:36 - [REQUEST] end +2022-04-01 08:41:19.582 | WARNING | dcs.tests.server:run:37 - communication over! +2022-04-01 08:41:19.582 | WARNING | __main__::22 - Overing... +2022-04-01 08:42:10.111 | INFO | __main__::9 - reading config args... +2022-04-01 08:42:10.112 | INFO | __main__::16 - starting the server... +2022-04-01 08:42:12.631 | INFO | dcs.tests.user_request_handler:login:35 - [REQUEST] login +2022-04-01 08:42:12.659 | INFO | dcs.tests.user_request_handler:login:42 - [RESPONSE] login: 3852e55acf1b5641e3d67991d5d104e8e82d66c2 +2022-04-01 08:42:12.660 | INFO | dcs.tests.user_request_handler:report_state:26 - [REQUEST] report free +2022-04-01 08:42:12.660 | INFO | dcs.tests.user_request_handler:report_state:32 - [RESPONSE] report free: success marked 3852e55acf1b5641e3d67991d5d104e8e82d66c2 +2022-04-01 08:42:24.187 | INFO | dcs.tests.requestHandler:crawl_zhiwang:46 - [REQUEST] crawl zhiwang +2022-04-01 08:42:24.188 | INFO | dcs.tests.spider:run:154 - crawling... +2022-04-01 08:46:30.210 | INFO | __main__::9 - reading config args... +2022-04-01 08:46:30.210 | INFO | __main__::16 - starting the server... +2022-04-01 08:46:32.912 | INFO | dcs.tests.user_request_handler:login:35 - [REQUEST] login +2022-04-01 08:46:32.941 | INFO | dcs.tests.user_request_handler:login:42 - [RESPONSE] login: 91c17091bf6ff1855e24152606b9ee73fee41059 +2022-04-01 08:46:32.942 | INFO | dcs.tests.user_request_handler:report_state:26 - [REQUEST] report free +2022-04-01 08:46:32.943 | INFO | dcs.tests.user_request_handler:report_state:32 - [RESPONSE] report free: success marked 91c17091bf6ff1855e24152606b9ee73fee41059 +2022-04-01 08:46:42.426 | INFO | dcs.tests.requestHandler:crawl_zhiwang:46 - [REQUEST] crawl zhiwang +2022-04-01 08:46:42.426 | INFO | dcs.tests.spider:run:155 - crawling... +2022-04-08 20:27:02.331 | INFO | __main__::9 - reading config args... +2022-04-08 20:27:02.333 | INFO | __main__::16 - starting the server... +2022-04-08 20:27:13.717 | INFO | dcs.tests.user_request_handler:login:35 - [REQUEST] login +2022-04-08 20:27:13.753 | INFO | dcs.tests.user_request_handler:login:42 - [RESPONSE] login: 5bc37fbdcb59701ad127b0a76920326a77a882ba +2022-04-08 20:27:13.754 | INFO | dcs.tests.user_request_handler:report_state:26 - [REQUEST] report free +2022-04-08 20:27:13.754 | INFO | dcs.tests.user_request_handler:report_state:32 - [RESPONSE] report free: success marked 5bc37fbdcb59701ad127b0a76920326a77a882ba +2022-04-08 20:27:20.484 | INFO | dcs.tests.requestHandler:crawl_zhiwang:46 - [REQUEST] crawl zhiwang +2022-04-08 20:27:20.484 | INFO | dcs.tests.spider:run:156 - crawling... diff --git a/dcs/tests/client.py b/dcs/tests/client.py index 69e37b1..65bfc76 100644 --- a/dcs/tests/client.py +++ b/dcs/tests/client.py @@ -4,6 +4,7 @@ from threading import Thread import socket from json import JSONEncoder, JSONDecoder import sys +from dcs.tests.server import Server # -------------------------------配置-------------------------------------------- # ------------------------------config-------------------------------------------- @@ -43,14 +44,15 @@ def generate_request(request) -> 'bytes': class Client(Thread): - def __init__(self, ip: str, port: int) -> None: + def __init__(self, server_ip: str, server_port: int) -> None: """ - :param ip: 服务器IP - :param port: 服务器端口 + :param server_ip: 服务器IP + :param server_port: 服务器端口 """ super().__init__() - self.ip = ip - self.port = port + self.ip = server_ip + self.port = server_port + self.cookie = None def test(self): with socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP) as socket_to_server: @@ -68,24 +70,6 @@ class Client(Thread): return responseJson['test'] - def translate(self, word: str): - with socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP) as socket_to_server: - socket_to_server.connect((self.ip, self.port)) - request = dict() - request['action'] = 'translate' - request['word'] = word - request['cookie'] = '2b0fd361bbf0b986fbc20d989a224d66fe9cb13a' - - full_request = generate_request(request) - - socket_to_server.sendall(full_request) - - responseJson = JSONDecoder().decode( - read_bytes(socket_to_server, struct.unpack('!Q', socket_to_server.recv(8))[0]).decode( - "utf-8")) - - return responseJson['translate'] - def crawling(self, word: str, pages_start: int, pages_end: int): with socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP) as socket_to_server: socket_to_server.connect((self.ip, self.port)) @@ -94,6 +78,7 @@ class Client(Thread): request['word'] = word request['pages_start'] = str(pages_start) request['pages_end'] = str(pages_end) + request['cookie'] = '2b0fd361bbf0b986fbc20d989a224d66fe9cb13a' full_request = generate_request(request) @@ -112,7 +97,7 @@ class Client(Thread): request = dict() request['action'] = 'report_' + status request['spider_info'] = (ip, port) - request['cookie'] = '2b0fd361bbf0b986fbc20d989a224d66fe9cb13a' + request['cookie'] = self.cookie full_request = generate_request(request) @@ -122,7 +107,7 @@ class Client(Thread): read_bytes(socket_to_server, struct.unpack('!Q', socket_to_server.recv(8))[0]).decode( "utf-8")) - return responseJson['report_'+status] + return responseJson['report_' + status] def end(self): """ @@ -140,10 +125,30 @@ class Client(Thread): print("end communication!") + def login(self, user, password): + with socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP) as socket_to_server: + socket_to_server.connect((self.ip, self.port)) + request = dict() + request['action'] = 'login' + request['user'] = user + request['password'] = password + + full_request = generate_request(request) + + socket_to_server.sendall(full_request) + + responseJson = JSONDecoder().decode( + read_bytes(socket_to_server, struct.unpack('!Q', socket_to_server.recv(8))[0]).decode( + "utf-8")) + + if responseJson['login'] not in ['用户名错误,登录失败', '密码错误,登录失败']: + self.cookie = responseJson['login'] + return responseJson['login'] + def run(self) -> None: + print(self.login('2', '2')) print(self.report_status('free')) - print(self.crawling(input("word:"), pages_start=3, pages_end=4)) # [3,4) - self.report_status('free') + print(self.crawling(input("word:"), pages_start=1, pages_end=4)) # [3,4) self.end() @@ -151,3 +156,7 @@ download_task = Client(ip, port) download_task.daemon = True download_task.start() download_task.join() +server = Server(7777) +server.daemon = True +server.start() +server.join() diff --git a/dcs/tests/config.py b/dcs/tests/config.py index b722742..88815e1 100644 --- a/dcs/tests/config.py +++ b/dcs/tests/config.py @@ -16,35 +16,6 @@ class global_var: free_spiders = [] current_user_info: list[CUI] = [] - def exists(self, cookie): - for i in self.current_user_info: - if i.cookie == cookie: - return True - return False - - def get_by_cookie(self, cookie): - for i in self.current_user_info: - if i.cookie == cookie: - return i - return None - - def delete_user(self, cookie): - i = self.get_by_cookie(cookie) - self.current_user_info.remove(i) - - -# 对于每个全局变量,都需要定义get_value和set_value接口 -def add_free_spider(spider_info): - global_var.free_spiders.append(spider_info) - - -def get_free_spiders(): - return global_var.free_spiders - - -def delete_spider_by_id(spider_info): - global_var.free_spiders.remove(spider_info) - def get_free_sockets() -> tuple[socket.socket]: fs: list[socket.socket] = [] @@ -54,6 +25,13 @@ def get_free_sockets() -> tuple[socket.socket]: return tuple(fs) +def exists(cookie): + for i in global_var.current_user_info: + if i.cookie == cookie: + return True + return False + + def add_user(user_name, login_time, login_state, state, cookie, st=None): global_var.current_user_info.append(CUI(user_name, login_time, login_state, state, cookie, st)) @@ -62,4 +40,15 @@ def set_state_socket(cookie, state): for i in global_var.current_user_info: if i.cookie == cookie: i.state = state - break \ No newline at end of file + break + + +def get_by_cookie(cookie): + for i in global_var.current_user_info: + if i.cookie == cookie: + return i + return None + +def delete_user(cookie): + i = global_var.get_by_cookie(cookie) + global_var.current_user_info.remove(i) \ No newline at end of file diff --git a/dcs/tests/database.py b/dcs/tests/database.py index 580769c..d4ce33e 100644 --- a/dcs/tests/database.py +++ b/dcs/tests/database.py @@ -43,6 +43,21 @@ def register(u_name, u_pwd): print(e) +def get_now(): + try: + conn = mysql_conn() + cur = conn.cursor() + select_sql = f'select now()' + cur.execute(select_sql) + res = cur.fetchone() + # 关闭连接 + cur.close() + conn.close() + return res[0] + except Exception as e: + print(e) + + def login(u_name, u_pwd, st): s1 = sha1() s1.update(u_pwd.encode()) @@ -61,9 +76,9 @@ def login(u_name, u_pwd, st): m_pwd = res[0] if m_pwd == sha_pwd: # info = '用户' + u_name + '登录成功' - info = cookie.Cookie(u_name, 'time', 'true').generate_cookie() - config.add_user(u_name, 'time', 'true', 'busy', info, st) - conn.commit() + time = str(get_now()) + info = cookie.Cookie(u_name, time, 'true').generate_cookie() + config.add_user(u_name, time, 'true', 'busy', info, st) else: info = '密码错误,登录失败' # 关闭连接 @@ -102,9 +117,9 @@ def get_last_crawl_id(table_name: str) -> int: last_crawl_id = int(last_crawl_id_res[0]) cur.close() conn.close() + return last_crawl_id except Exception as e: print(e) - return last_crawl_id def drop_table(table_name: str): @@ -148,12 +163,12 @@ def create_crawl_result_table(table_name: str): def create_user_info(table_name: str = 'user_info'): create_sql = f'create table if not exists {table_name} (' \ - f'id int primary key not null auto_increment,' \ - f'create_time timestamp not null default now(),' \ - f'user_name varchar(100),' \ - f'user_password varchar(200),' \ - f'login_state boolean default false' \ - f')' + f'id int primary key not null auto_increment,' \ + f'create_time timestamp not null default now(),' \ + f'user_name varchar(100),' \ + f'user_password varchar(200),' \ + f'login_state boolean default false' \ + f')' create_table(create_sql) @@ -175,8 +190,9 @@ def write_result2database(res: list, table_name: str, last_crawl_id: int): if __name__ == '__main__': - create_crawl_result_table('table_name') - print(write_result2database(['name', 'college', 'major', 'paper'], "table_name", last_crawl_id=0)) + get_now() + # create_crawl_result_table('table_name') + # print(write_result2database(['name', 'college', 'major', 'paper'], "table_name", last_crawl_id=0)) pass ''' u_name = input('请输入用户名') diff --git a/dcs/tests/spider.py b/dcs/tests/spider.py index a190d79..2f4bb63 100644 --- a/dcs/tests/spider.py +++ b/dcs/tests/spider.py @@ -1,5 +1,8 @@ import csv import threading +import socket +from json import JSONEncoder, JSONDecoder +import struct import dcs.tests.config from msedge.selenium_tools import Edge @@ -80,6 +83,33 @@ def write2csv(papers: list, file_name='./paper_author.csv'): f_papers_authors.close() +def read_bytes(s: 'socket.socket', size: 'int') -> 'bytes': + """ + 从socket读取size个字节 + :param s:套接字 + :param size:要读取的大小 + :return:读取的字节数,在遇到套接字关闭的情况下,返回的数据的长度可能小于 size + """ + data = ''.encode('utf-8') + while len(data) < size: + rsp_data = s.recv(size - len(data)) + data += rsp_data + if len(rsp_data) == 0: + break + return data + + +def generate_request(request) -> 'bytes': + """ + 根据传入的dict生成请求 + 请求包含 8字节头长度+头数据 + :param request: dict + :return: bytes 请求数据 + """ + request_bytes = JSONEncoder().encode(request).encode("utf-8") + return struct.pack("!Q", len(request_bytes)) + request_bytes + + class Spider(threading.Thread): def __init__(self, word: str, pages_start=1, pages_end=1): super().__init__() @@ -89,12 +119,34 @@ class Spider(threading.Thread): self.pages_end = pages_end pass + def crawling(self, word: str, pages_start: int, pages_end: int, client_socket: socket.socket): + + with socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP) as socket_to_server: + socket_to_server.connect((self.ip, self.port)) + request = dict() + request['action'] = 'crawl zhiwang' + request['word'] = word + request['pages_start'] = str(pages_start) + request['pages_end'] = str(pages_end) + + full_request = generate_request(request) + + socket_to_server.sendall(full_request) + + responseJson = JSONDecoder().decode( + read_bytes(socket_to_server, struct.unpack('!Q', socket_to_server.recv(8))[0]).decode( + "utf-8")) + + return responseJson['crawl zhiwang'] + def distribute_spiders(self): free_sockets = dcs.tests.config.get_free_sockets() qt = (self.pages_end - self.pages_start) // (len(free_sockets)+1) // len(free_sockets) for st in range(len(free_sockets)): request_map = {'action': 'crawl_zhiwang', 'pages_start': f'{st}', 'pages_end': f'{st+qt}'} self.pages_start = st + qt + print(request_map) + print(st, self.crawling(self.word, st, st+qt, free_sockets[st])) ''' r = RequestHandler(self, free_sockets[st], request_map) r.start() diff --git a/docs/pictures/项目结构图.pdf b/docs/pictures/项目结构图.pdf new file mode 100644 index 0000000000000000000000000000000000000000..aa374cca529f7d7ffb5f83c5514354151ccf40d2 GIT binary patch literal 51095 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 MUrA|;t?B Z(8MF0Q* literal 0 HcmV?d00001