FC/FFAInobug/crawlers.py

111 lines
4.0 KiB
Python
Raw Permalink Normal View History

new file: FFAI/__pycache__/analyzer.cpython-313.pyc new file: FFAI/__pycache__/crawlers.cpython-313.pyc new file: FFAI/analyzer.py new file: FFAI/crawlers.py new file: FFAI/main.py renamed: main/build/newtest/Analysis-00.toc -> test/build/newtest/Analysis-00.toc renamed: main/build/newtest/COLLECT-00.toc -> test/build/newtest/COLLECT-00.toc renamed: main/build/newtest/EXE-00.toc -> test/build/newtest/EXE-00.toc renamed: main/build/newtest/PKG-00.toc -> test/build/newtest/PKG-00.toc renamed: main/build/newtest/PYZ-00.pyz -> test/build/newtest/PYZ-00.pyz renamed: main/build/newtest/PYZ-00.toc -> test/build/newtest/PYZ-00.toc renamed: main/build/newtest/base_library.zip -> test/build/newtest/base_library.zip renamed: main/build/newtest/localpycs/pyimod01_archive.pyc -> test/build/newtest/localpycs/pyimod01_archive.pyc renamed: main/build/newtest/localpycs/pyimod02_importers.pyc -> test/build/newtest/localpycs/pyimod02_importers.pyc renamed: main/build/newtest/localpycs/pyimod03_ctypes.pyc -> test/build/newtest/localpycs/pyimod03_ctypes.pyc renamed: main/build/newtest/localpycs/pyimod04_pywin32.pyc -> test/build/newtest/localpycs/pyimod04_pywin32.pyc renamed: main/build/newtest/localpycs/struct.pyc -> test/build/newtest/localpycs/struct.pyc renamed: main/build/newtest/newtest.exe -> test/build/newtest/newtest.exe renamed: main/build/newtest/newtest.pkg -> test/build/newtest/newtest.pkg renamed: main/build/newtest/warn-newtest.txt -> test/build/newtest/warn-newtest.txt renamed: main/build/newtest/xref-newtest.html -> test/build/newtest/xref-newtest.html new file: test/dist/newtest/_internal/VCRUNTIME140.dll renamed: main/dist/newtest/_internal/_bz2.pyd -> test/dist/newtest/_internal/_bz2.pyd renamed: main/dist/newtest/_internal/_decimal.pyd -> test/dist/newtest/_internal/_decimal.pyd renamed: main/dist/newtest/_internal/_hashlib.pyd -> test/dist/newtest/_internal/_hashlib.pyd renamed: main/dist/newtest/_internal/_lzma.pyd -> test/dist/newtest/_internal/_lzma.pyd renamed: main/dist/newtest/_internal/_socket.pyd -> test/dist/newtest/_internal/_socket.pyd renamed: main/dist/newtest/_internal/api-ms-win-core-console-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-console-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-datetime-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-datetime-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-debug-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-debug-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-errorhandling-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-errorhandling-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-fibers-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-fibers-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-file-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-file-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-file-l1-2-0.dll -> test/dist/newtest/_internal/api-ms-win-core-file-l1-2-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-file-l2-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-file-l2-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-handle-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-handle-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-heap-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-heap-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-interlocked-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-interlocked-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-libraryloader-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-libraryloader-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-localization-l1-2-0.dll -> test/dist/newtest/_internal/api-ms-win-core-localization-l1-2-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-memory-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-memory-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-namedpipe-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-namedpipe-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-processenvironment-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-processenvironment-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-processthreads-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-processthreads-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-processthreads-l1-1-1.dll -> test/dist/newtest/_internal/api-ms-win-core-processthreads-l1-1-1.dll renamed: main/dist/newtest/_internal/api-ms-win-core-profile-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-profile-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-rtlsupport-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-rtlsupport-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-string-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-string-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-synch-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-synch-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-synch-l1-2-0.dll -> test/dist/newtest/_internal/api-ms-win-core-synch-l1-2-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-sysinfo-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-sysinfo-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-timezone-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-timezone-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-util-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-util-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-conio-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-conio-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-convert-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-convert-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-environment-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-environment-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-filesystem-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-filesystem-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-heap-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-heap-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-locale-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-locale-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-math-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-math-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-process-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-process-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-runtime-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-runtime-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-stdio-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-stdio-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-string-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-string-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-time-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-time-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-utility-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-utility-l1-1-0.dll renamed: main/dist/newtest/_internal/base_library.zip -> test/dist/newtest/_internal/base_library.zip renamed: main/dist/newtest/_internal/libcrypto-3.dll -> test/dist/newtest/_internal/libcrypto-3.dll renamed: main/dist/newtest/_internal/python313.dll -> test/dist/newtest/_internal/python313.dll renamed: main/dist/newtest/_internal/select.pyd -> test/dist/newtest/_internal/select.pyd renamed: main/dist/newtest/_internal/ucrtbase.dll -> test/dist/newtest/_internal/ucrtbase.dll renamed: main/dist/newtest/_internal/unicodedata.pyd -> test/dist/newtest/_internal/unicodedata.pyd renamed: main/dist/newtest/newtest.exe -> test/dist/newtest/newtest.exe renamed: main/newtest.py -> test/newtest.py renamed: main/newtest.spec -> test/newtest.spec
2025-06-06 23:33:48 +08:00
import urllib.request
import os
import time
from urllib.parse import quote
from html.parser import HTMLParser
import requests # type: ignore
from bs4 import BeautifulSoup # type: ignore
from urllib.parse import quote_plus
new file: FFAI/__pycache__/analyzer.cpython-313.pyc new file: FFAI/__pycache__/crawlers.cpython-313.pyc new file: FFAI/analyzer.py new file: FFAI/crawlers.py new file: FFAI/main.py renamed: main/build/newtest/Analysis-00.toc -> test/build/newtest/Analysis-00.toc renamed: main/build/newtest/COLLECT-00.toc -> test/build/newtest/COLLECT-00.toc renamed: main/build/newtest/EXE-00.toc -> test/build/newtest/EXE-00.toc renamed: main/build/newtest/PKG-00.toc -> test/build/newtest/PKG-00.toc renamed: main/build/newtest/PYZ-00.pyz -> test/build/newtest/PYZ-00.pyz renamed: main/build/newtest/PYZ-00.toc -> test/build/newtest/PYZ-00.toc renamed: main/build/newtest/base_library.zip -> test/build/newtest/base_library.zip renamed: main/build/newtest/localpycs/pyimod01_archive.pyc -> test/build/newtest/localpycs/pyimod01_archive.pyc renamed: main/build/newtest/localpycs/pyimod02_importers.pyc -> test/build/newtest/localpycs/pyimod02_importers.pyc renamed: main/build/newtest/localpycs/pyimod03_ctypes.pyc -> test/build/newtest/localpycs/pyimod03_ctypes.pyc renamed: main/build/newtest/localpycs/pyimod04_pywin32.pyc -> test/build/newtest/localpycs/pyimod04_pywin32.pyc renamed: main/build/newtest/localpycs/struct.pyc -> test/build/newtest/localpycs/struct.pyc renamed: main/build/newtest/newtest.exe -> test/build/newtest/newtest.exe renamed: main/build/newtest/newtest.pkg -> test/build/newtest/newtest.pkg renamed: main/build/newtest/warn-newtest.txt -> test/build/newtest/warn-newtest.txt renamed: main/build/newtest/xref-newtest.html -> test/build/newtest/xref-newtest.html new file: test/dist/newtest/_internal/VCRUNTIME140.dll renamed: main/dist/newtest/_internal/_bz2.pyd -> test/dist/newtest/_internal/_bz2.pyd renamed: main/dist/newtest/_internal/_decimal.pyd -> test/dist/newtest/_internal/_decimal.pyd renamed: main/dist/newtest/_internal/_hashlib.pyd -> test/dist/newtest/_internal/_hashlib.pyd renamed: main/dist/newtest/_internal/_lzma.pyd -> test/dist/newtest/_internal/_lzma.pyd renamed: main/dist/newtest/_internal/_socket.pyd -> test/dist/newtest/_internal/_socket.pyd renamed: main/dist/newtest/_internal/api-ms-win-core-console-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-console-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-datetime-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-datetime-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-debug-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-debug-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-errorhandling-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-errorhandling-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-fibers-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-fibers-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-file-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-file-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-file-l1-2-0.dll -> test/dist/newtest/_internal/api-ms-win-core-file-l1-2-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-file-l2-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-file-l2-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-handle-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-handle-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-heap-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-heap-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-interlocked-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-interlocked-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-libraryloader-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-libraryloader-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-localization-l1-2-0.dll -> test/dist/newtest/_internal/api-ms-win-core-localization-l1-2-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-memory-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-memory-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-namedpipe-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-namedpipe-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-processenvironment-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-processenvironment-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-processthreads-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-processthreads-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-processthreads-l1-1-1.dll -> test/dist/newtest/_internal/api-ms-win-core-processthreads-l1-1-1.dll renamed: main/dist/newtest/_internal/api-ms-win-core-profile-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-profile-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-rtlsupport-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-rtlsupport-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-string-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-string-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-synch-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-synch-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-synch-l1-2-0.dll -> test/dist/newtest/_internal/api-ms-win-core-synch-l1-2-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-sysinfo-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-sysinfo-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-timezone-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-timezone-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-util-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-util-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-conio-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-conio-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-convert-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-convert-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-environment-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-environment-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-filesystem-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-filesystem-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-heap-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-heap-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-locale-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-locale-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-math-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-math-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-process-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-process-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-runtime-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-runtime-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-stdio-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-stdio-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-string-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-string-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-time-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-time-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-utility-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-utility-l1-1-0.dll renamed: main/dist/newtest/_internal/base_library.zip -> test/dist/newtest/_internal/base_library.zip renamed: main/dist/newtest/_internal/libcrypto-3.dll -> test/dist/newtest/_internal/libcrypto-3.dll renamed: main/dist/newtest/_internal/python313.dll -> test/dist/newtest/_internal/python313.dll renamed: main/dist/newtest/_internal/select.pyd -> test/dist/newtest/_internal/select.pyd renamed: main/dist/newtest/_internal/ucrtbase.dll -> test/dist/newtest/_internal/ucrtbase.dll renamed: main/dist/newtest/_internal/unicodedata.pyd -> test/dist/newtest/_internal/unicodedata.pyd renamed: main/dist/newtest/newtest.exe -> test/dist/newtest/newtest.exe renamed: main/newtest.py -> test/newtest.py renamed: main/newtest.spec -> test/newtest.spec
2025-06-06 23:33:48 +08:00
class PureHTMLParser(HTMLParser):
new file: FFAI/__pycache__/analyzer.cpython-313.pyc new file: FFAI/__pycache__/crawlers.cpython-313.pyc new file: FFAI/analyzer.py new file: FFAI/crawlers.py new file: FFAI/main.py renamed: main/build/newtest/Analysis-00.toc -> test/build/newtest/Analysis-00.toc renamed: main/build/newtest/COLLECT-00.toc -> test/build/newtest/COLLECT-00.toc renamed: main/build/newtest/EXE-00.toc -> test/build/newtest/EXE-00.toc renamed: main/build/newtest/PKG-00.toc -> test/build/newtest/PKG-00.toc renamed: main/build/newtest/PYZ-00.pyz -> test/build/newtest/PYZ-00.pyz renamed: main/build/newtest/PYZ-00.toc -> test/build/newtest/PYZ-00.toc renamed: main/build/newtest/base_library.zip -> test/build/newtest/base_library.zip renamed: main/build/newtest/localpycs/pyimod01_archive.pyc -> test/build/newtest/localpycs/pyimod01_archive.pyc renamed: main/build/newtest/localpycs/pyimod02_importers.pyc -> test/build/newtest/localpycs/pyimod02_importers.pyc renamed: main/build/newtest/localpycs/pyimod03_ctypes.pyc -> test/build/newtest/localpycs/pyimod03_ctypes.pyc renamed: main/build/newtest/localpycs/pyimod04_pywin32.pyc -> test/build/newtest/localpycs/pyimod04_pywin32.pyc renamed: main/build/newtest/localpycs/struct.pyc -> test/build/newtest/localpycs/struct.pyc renamed: main/build/newtest/newtest.exe -> test/build/newtest/newtest.exe renamed: main/build/newtest/newtest.pkg -> test/build/newtest/newtest.pkg renamed: main/build/newtest/warn-newtest.txt -> test/build/newtest/warn-newtest.txt renamed: main/build/newtest/xref-newtest.html -> test/build/newtest/xref-newtest.html new file: test/dist/newtest/_internal/VCRUNTIME140.dll renamed: main/dist/newtest/_internal/_bz2.pyd -> test/dist/newtest/_internal/_bz2.pyd renamed: main/dist/newtest/_internal/_decimal.pyd -> test/dist/newtest/_internal/_decimal.pyd renamed: main/dist/newtest/_internal/_hashlib.pyd -> test/dist/newtest/_internal/_hashlib.pyd renamed: main/dist/newtest/_internal/_lzma.pyd -> test/dist/newtest/_internal/_lzma.pyd renamed: main/dist/newtest/_internal/_socket.pyd -> test/dist/newtest/_internal/_socket.pyd renamed: main/dist/newtest/_internal/api-ms-win-core-console-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-console-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-datetime-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-datetime-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-debug-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-debug-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-errorhandling-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-errorhandling-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-fibers-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-fibers-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-file-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-file-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-file-l1-2-0.dll -> test/dist/newtest/_internal/api-ms-win-core-file-l1-2-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-file-l2-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-file-l2-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-handle-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-handle-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-heap-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-heap-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-interlocked-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-interlocked-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-libraryloader-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-libraryloader-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-localization-l1-2-0.dll -> test/dist/newtest/_internal/api-ms-win-core-localization-l1-2-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-memory-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-memory-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-namedpipe-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-namedpipe-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-processenvironment-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-processenvironment-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-processthreads-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-processthreads-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-processthreads-l1-1-1.dll -> test/dist/newtest/_internal/api-ms-win-core-processthreads-l1-1-1.dll renamed: main/dist/newtest/_internal/api-ms-win-core-profile-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-profile-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-rtlsupport-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-rtlsupport-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-string-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-string-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-synch-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-synch-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-synch-l1-2-0.dll -> test/dist/newtest/_internal/api-ms-win-core-synch-l1-2-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-sysinfo-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-sysinfo-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-timezone-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-timezone-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-util-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-util-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-conio-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-conio-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-convert-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-convert-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-environment-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-environment-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-filesystem-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-filesystem-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-heap-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-heap-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-locale-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-locale-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-math-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-math-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-process-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-process-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-runtime-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-runtime-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-stdio-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-stdio-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-string-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-string-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-time-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-time-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-utility-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-utility-l1-1-0.dll renamed: main/dist/newtest/_internal/base_library.zip -> test/dist/newtest/_internal/base_library.zip renamed: main/dist/newtest/_internal/libcrypto-3.dll -> test/dist/newtest/_internal/libcrypto-3.dll renamed: main/dist/newtest/_internal/python313.dll -> test/dist/newtest/_internal/python313.dll renamed: main/dist/newtest/_internal/select.pyd -> test/dist/newtest/_internal/select.pyd renamed: main/dist/newtest/_internal/ucrtbase.dll -> test/dist/newtest/_internal/ucrtbase.dll renamed: main/dist/newtest/_internal/unicodedata.pyd -> test/dist/newtest/_internal/unicodedata.pyd renamed: main/dist/newtest/newtest.exe -> test/dist/newtest/newtest.exe renamed: main/newtest.py -> test/newtest.py renamed: main/newtest.spec -> test/newtest.spec
2025-06-06 23:33:48 +08:00
# ...保持之前的HTML解析器代码不变...
class PureCrawler:
def __init__(self, cache_dir="cache"):
self.user_agent = "Mozilla/5.0"
self.parser = PureHTMLParser()
self.cache_dir = cache_dir
os.makedirs(cache_dir, exist_ok=True)
def _is_cache_valid(self, cache_file):
"""检查缓存是否有效"""
if not os.path.exists(cache_file):
return False
file_time = os.path.getmtime(cache_file)
return (time.time() - file_time) < self.cache_expiry
new file: FFAI/__pycache__/analyzer.cpython-313.pyc new file: FFAI/__pycache__/crawlers.cpython-313.pyc new file: FFAI/analyzer.py new file: FFAI/crawlers.py new file: FFAI/main.py renamed: main/build/newtest/Analysis-00.toc -> test/build/newtest/Analysis-00.toc renamed: main/build/newtest/COLLECT-00.toc -> test/build/newtest/COLLECT-00.toc renamed: main/build/newtest/EXE-00.toc -> test/build/newtest/EXE-00.toc renamed: main/build/newtest/PKG-00.toc -> test/build/newtest/PKG-00.toc renamed: main/build/newtest/PYZ-00.pyz -> test/build/newtest/PYZ-00.pyz renamed: main/build/newtest/PYZ-00.toc -> test/build/newtest/PYZ-00.toc renamed: main/build/newtest/base_library.zip -> test/build/newtest/base_library.zip renamed: main/build/newtest/localpycs/pyimod01_archive.pyc -> test/build/newtest/localpycs/pyimod01_archive.pyc renamed: main/build/newtest/localpycs/pyimod02_importers.pyc -> test/build/newtest/localpycs/pyimod02_importers.pyc renamed: main/build/newtest/localpycs/pyimod03_ctypes.pyc -> test/build/newtest/localpycs/pyimod03_ctypes.pyc renamed: main/build/newtest/localpycs/pyimod04_pywin32.pyc -> test/build/newtest/localpycs/pyimod04_pywin32.pyc renamed: main/build/newtest/localpycs/struct.pyc -> test/build/newtest/localpycs/struct.pyc renamed: main/build/newtest/newtest.exe -> test/build/newtest/newtest.exe renamed: main/build/newtest/newtest.pkg -> test/build/newtest/newtest.pkg renamed: main/build/newtest/warn-newtest.txt -> test/build/newtest/warn-newtest.txt renamed: main/build/newtest/xref-newtest.html -> test/build/newtest/xref-newtest.html new file: test/dist/newtest/_internal/VCRUNTIME140.dll renamed: main/dist/newtest/_internal/_bz2.pyd -> test/dist/newtest/_internal/_bz2.pyd renamed: main/dist/newtest/_internal/_decimal.pyd -> test/dist/newtest/_internal/_decimal.pyd renamed: main/dist/newtest/_internal/_hashlib.pyd -> test/dist/newtest/_internal/_hashlib.pyd renamed: main/dist/newtest/_internal/_lzma.pyd -> test/dist/newtest/_internal/_lzma.pyd renamed: main/dist/newtest/_internal/_socket.pyd -> test/dist/newtest/_internal/_socket.pyd renamed: main/dist/newtest/_internal/api-ms-win-core-console-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-console-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-datetime-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-datetime-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-debug-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-debug-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-errorhandling-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-errorhandling-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-fibers-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-fibers-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-file-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-file-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-file-l1-2-0.dll -> test/dist/newtest/_internal/api-ms-win-core-file-l1-2-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-file-l2-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-file-l2-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-handle-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-handle-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-heap-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-heap-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-interlocked-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-interlocked-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-libraryloader-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-libraryloader-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-localization-l1-2-0.dll -> test/dist/newtest/_internal/api-ms-win-core-localization-l1-2-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-memory-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-memory-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-namedpipe-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-namedpipe-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-processenvironment-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-processenvironment-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-processthreads-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-processthreads-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-processthreads-l1-1-1.dll -> test/dist/newtest/_internal/api-ms-win-core-processthreads-l1-1-1.dll renamed: main/dist/newtest/_internal/api-ms-win-core-profile-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-profile-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-rtlsupport-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-rtlsupport-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-string-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-string-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-synch-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-synch-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-synch-l1-2-0.dll -> test/dist/newtest/_internal/api-ms-win-core-synch-l1-2-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-sysinfo-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-sysinfo-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-timezone-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-timezone-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-util-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-util-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-conio-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-conio-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-convert-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-convert-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-environment-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-environment-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-filesystem-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-filesystem-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-heap-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-heap-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-locale-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-locale-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-math-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-math-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-process-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-process-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-runtime-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-runtime-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-stdio-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-stdio-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-string-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-string-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-time-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-time-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-utility-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-utility-l1-1-0.dll renamed: main/dist/newtest/_internal/base_library.zip -> test/dist/newtest/_internal/base_library.zip renamed: main/dist/newtest/_internal/libcrypto-3.dll -> test/dist/newtest/_internal/libcrypto-3.dll renamed: main/dist/newtest/_internal/python313.dll -> test/dist/newtest/_internal/python313.dll renamed: main/dist/newtest/_internal/select.pyd -> test/dist/newtest/_internal/select.pyd renamed: main/dist/newtest/_internal/ucrtbase.dll -> test/dist/newtest/_internal/ucrtbase.dll renamed: main/dist/newtest/_internal/unicodedata.pyd -> test/dist/newtest/_internal/unicodedata.pyd renamed: main/dist/newtest/newtest.exe -> test/dist/newtest/newtest.exe renamed: main/newtest.py -> test/newtest.py renamed: main/newtest.spec -> test/newtest.spec
2025-06-06 23:33:48 +08:00
def _get_cache_path(self, query: str) -> str:
"""生成缓存文件名"""
safe_query = "".join(c if c.isalnum() else "_" for c in query)
return f"{self.cache_dir}/{safe_query}.txt"
def _save_to_cache(self, query: str, data: list):
"""保存搜索结果到缓存"""
with open(self._get_cache_path(query), "w", encoding="utf-8") as f:
for item in data:
f.write(f"URL: {item['url']}\n")
f.write(f"Text: {item['text']}\n")
f.write("="*50 + "\n")
def _load_from_cache(self, query: str) -> list:
"""从缓存加载数据"""
cache_file = self._get_cache_path(query)
if not os.path.exists(cache_file):
return None
with open(cache_file, "r", encoding="utf-8") as f:
content = f.read()
# 解析缓存文件
items = []
for block in content.split("="*50):
if not block.strip():
continue
url = text = ""
for line in block.split("\n"):
if line.startswith("URL: "):
url = line[5:]
elif line.startswith("Text: "):
text = line[6:]
if url:
items.append({"url": url, "text": text})
return items
def fetch(self, query, force_update=False):
cache_file = os.path.join(self.cache_dir, f"{quote_plus(query)}.json")
new file: FFAI/__pycache__/analyzer.cpython-313.pyc new file: FFAI/__pycache__/crawlers.cpython-313.pyc new file: FFAI/analyzer.py new file: FFAI/crawlers.py new file: FFAI/main.py renamed: main/build/newtest/Analysis-00.toc -> test/build/newtest/Analysis-00.toc renamed: main/build/newtest/COLLECT-00.toc -> test/build/newtest/COLLECT-00.toc renamed: main/build/newtest/EXE-00.toc -> test/build/newtest/EXE-00.toc renamed: main/build/newtest/PKG-00.toc -> test/build/newtest/PKG-00.toc renamed: main/build/newtest/PYZ-00.pyz -> test/build/newtest/PYZ-00.pyz renamed: main/build/newtest/PYZ-00.toc -> test/build/newtest/PYZ-00.toc renamed: main/build/newtest/base_library.zip -> test/build/newtest/base_library.zip renamed: main/build/newtest/localpycs/pyimod01_archive.pyc -> test/build/newtest/localpycs/pyimod01_archive.pyc renamed: main/build/newtest/localpycs/pyimod02_importers.pyc -> test/build/newtest/localpycs/pyimod02_importers.pyc renamed: main/build/newtest/localpycs/pyimod03_ctypes.pyc -> test/build/newtest/localpycs/pyimod03_ctypes.pyc renamed: main/build/newtest/localpycs/pyimod04_pywin32.pyc -> test/build/newtest/localpycs/pyimod04_pywin32.pyc renamed: main/build/newtest/localpycs/struct.pyc -> test/build/newtest/localpycs/struct.pyc renamed: main/build/newtest/newtest.exe -> test/build/newtest/newtest.exe renamed: main/build/newtest/newtest.pkg -> test/build/newtest/newtest.pkg renamed: main/build/newtest/warn-newtest.txt -> test/build/newtest/warn-newtest.txt renamed: main/build/newtest/xref-newtest.html -> test/build/newtest/xref-newtest.html new file: test/dist/newtest/_internal/VCRUNTIME140.dll renamed: main/dist/newtest/_internal/_bz2.pyd -> test/dist/newtest/_internal/_bz2.pyd renamed: main/dist/newtest/_internal/_decimal.pyd -> test/dist/newtest/_internal/_decimal.pyd renamed: main/dist/newtest/_internal/_hashlib.pyd -> test/dist/newtest/_internal/_hashlib.pyd renamed: main/dist/newtest/_internal/_lzma.pyd -> test/dist/newtest/_internal/_lzma.pyd renamed: main/dist/newtest/_internal/_socket.pyd -> test/dist/newtest/_internal/_socket.pyd renamed: main/dist/newtest/_internal/api-ms-win-core-console-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-console-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-datetime-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-datetime-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-debug-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-debug-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-errorhandling-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-errorhandling-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-fibers-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-fibers-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-file-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-file-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-file-l1-2-0.dll -> test/dist/newtest/_internal/api-ms-win-core-file-l1-2-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-file-l2-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-file-l2-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-handle-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-handle-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-heap-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-heap-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-interlocked-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-interlocked-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-libraryloader-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-libraryloader-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-localization-l1-2-0.dll -> test/dist/newtest/_internal/api-ms-win-core-localization-l1-2-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-memory-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-memory-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-namedpipe-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-namedpipe-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-processenvironment-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-processenvironment-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-processthreads-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-processthreads-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-processthreads-l1-1-1.dll -> test/dist/newtest/_internal/api-ms-win-core-processthreads-l1-1-1.dll renamed: main/dist/newtest/_internal/api-ms-win-core-profile-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-profile-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-rtlsupport-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-rtlsupport-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-string-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-string-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-synch-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-synch-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-synch-l1-2-0.dll -> test/dist/newtest/_internal/api-ms-win-core-synch-l1-2-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-sysinfo-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-sysinfo-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-timezone-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-timezone-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-core-util-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-core-util-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-conio-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-conio-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-convert-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-convert-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-environment-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-environment-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-filesystem-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-filesystem-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-heap-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-heap-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-locale-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-locale-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-math-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-math-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-process-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-process-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-runtime-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-runtime-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-stdio-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-stdio-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-string-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-string-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-time-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-time-l1-1-0.dll renamed: main/dist/newtest/_internal/api-ms-win-crt-utility-l1-1-0.dll -> test/dist/newtest/_internal/api-ms-win-crt-utility-l1-1-0.dll renamed: main/dist/newtest/_internal/base_library.zip -> test/dist/newtest/_internal/base_library.zip renamed: main/dist/newtest/_internal/libcrypto-3.dll -> test/dist/newtest/_internal/libcrypto-3.dll renamed: main/dist/newtest/_internal/python313.dll -> test/dist/newtest/_internal/python313.dll renamed: main/dist/newtest/_internal/select.pyd -> test/dist/newtest/_internal/select.pyd renamed: main/dist/newtest/_internal/ucrtbase.dll -> test/dist/newtest/_internal/ucrtbase.dll renamed: main/dist/newtest/_internal/unicodedata.pyd -> test/dist/newtest/_internal/unicodedata.pyd renamed: main/dist/newtest/newtest.exe -> test/dist/newtest/newtest.exe renamed: main/newtest.py -> test/newtest.py renamed: main/newtest.spec -> test/newtest.spec
2025-06-06 23:33:48 +08:00
# 检查缓存是否有效
if not force_update and self._is_cache_valid(cache_file):
return self._load_from_cache(cache_file)
try:
# 实际抓取逻辑 - 以百度搜索为例
search_url = f"https://www.baidu.com/s?wd={quote_plus(query)}"
response = requests.get(search_url, headers=self.headers, timeout=10)
response.raise_for_status()
# 解析网页内容
soup = BeautifulSoup(response.text, 'html.parser')
results = [(query)]
# 提取搜索结果 - 根据实际网站结构调整
for item in soup.select('.result.c-container'):
title = item.select_one('h3').get_text(strip=True)
link = item.find('a')['href']
abstract = item.select_one('.c-abstract').get_text(strip=True) if item.select_one('.c-abstract') else ""
results.append({
'title': title,
'url': link,
'abstract': abstract
})
data = {
'query': query,
'results': results,
'timestamp': int(time.time()),
'sources': [search_url]
}
# 保存到缓存
self._save_to_cache(cache_file, data)
return data
except Exception as e:
# 如果抓取失败但缓存存在,使用缓存
if os.path.exists(cache_file):
print(f"抓取失败,使用缓存数据: {str(e)}")
return self._load_from_cache(cache_file)
raise RuntimeError(f"抓取失败且无缓存可用: {str(e)}")