2026-03-21 22:30:37 [scrapy.utils.log] INFO: Scrapy 2.11.1 started (bot: news_scraper) 2026-03-21 22:30:37 [scrapy.utils.log] INFO: Versions: lxml 6.0.2.0, libxml2 2.14.6, cssselect 1.3.0, parsel 1.10.0, w3lib 2.3.1, Twisted 25.5.0, Python 3.11.13 (main, Aug 12 2025, 22:39:41) [GCC 14.2.0], pyOpenSSL 25.3.0 (OpenSSL 3.5.3 16 Sep 2025), cryptography 46.0.1, Platform Linux-5.15.0-164-generic-x86_64-with 2026-03-21 22:30:37 [scrapy.addons] INFO: Enabled addons: [] 2026-03-21 22:30:37 [asyncio] DEBUG: Using selector: EpollSelector 2026-03-21 22:30:37 [scrapy.utils.log] DEBUG: Using reactor: twisted.internet.asyncioreactor.AsyncioSelectorReactor 2026-03-21 22:30:37 [scrapy.utils.log] DEBUG: Using asyncio event loop: asyncio.unix_events._UnixSelectorEventLoop 2026-03-21 22:30:37 [scrapy.extensions.telnet] INFO: Telnet Password: 063a1642d11d63fd 2026-03-21 22:30:37 [botocore.hooks] DEBUG: Changing event name from creating-client-class.iot-data to creating-client-class.iot-data-plane 2026-03-21 22:30:37 [botocore.hooks] DEBUG: Changing event name from before-call.apigateway to before-call.api-gateway 2026-03-21 22:30:37 [botocore.hooks] DEBUG: Changing event name from request-created.machinelearning.Predict to request-created.machine-learning.Predict 2026-03-21 22:30:37 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.autoscaling.CreateLaunchConfiguration to before-parameter-build.auto-scaling.CreateLaunchConfiguration 2026-03-21 22:30:37 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.route53 to before-parameter-build.route-53 2026-03-21 22:30:37 [botocore.hooks] DEBUG: Changing event name from request-created.cloudsearchdomain.Search to request-created.cloudsearch-domain.Search 2026-03-21 22:30:37 [botocore.hooks] DEBUG: Changing event name from docs.*.autoscaling.CreateLaunchConfiguration.complete-section to docs.*.auto-scaling.CreateLaunchConfiguration.complete-section 2026-03-21 22:30:37 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.logs.CreateExportTask to before-parameter-build.cloudwatch-logs.CreateExportTask 2026-03-21 22:30:37 [botocore.hooks] DEBUG: Changing event name from docs.*.logs.CreateExportTask.complete-section to docs.*.cloudwatch-logs.CreateExportTask.complete-section 2026-03-21 22:30:37 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.cloudsearchdomain.Search to before-parameter-build.cloudsearch-domain.Search 2026-03-21 22:30:37 [botocore.hooks] DEBUG: Changing event name from docs.*.cloudsearchdomain.Search.complete-section to docs.*.cloudsearch-domain.Search.complete-section 2026-03-21 22:30:37 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/endpoints.json 2026-03-21 22:30:37 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/sdk-default-configuration.json 2026-03-21 22:30:37 [botocore.hooks] DEBUG: Event choose-service-name: calling handler 2026-03-21 22:30:37 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/s3/2006-03-01/service-2.json.gz 2026-03-21 22:30:37 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/s3/2006-03-01/endpoint-rule-set-1.json.gz 2026-03-21 22:30:37 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/partitions.json 2026-03-21 22:30:37 [botocore.hooks] DEBUG: Event creating-client-class.s3: calling handler 2026-03-21 22:30:37 [botocore.hooks] DEBUG: Event creating-client-class.s3: calling handler ._handler at 0x7f8dd73f4860> 2026-03-21 22:30:37 [botocore.hooks] DEBUG: Event creating-client-class.s3: calling handler 2026-03-21 22:30:37 [botocore.endpoint] DEBUG: Setting s3 timeout as (60, 60) 2026-03-21 22:30:37 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/_retry.json 2026-03-21 22:30:37 [botocore.client] DEBUG: Registering retry handlers for service: s3 2026-03-21 22:30:37 [botocore.utils] DEBUG: Registering S3 region redirector handler 2026-03-21 22:30:37 [botocore.utils] DEBUG: Registering S3Express Identity Resolver 2026-03-21 22:30:37 [scrapy.middleware] INFO: Enabled extensions: ['scrapy.extensions.corestats.CoreStats', 'scrapy.extensions.telnet.TelnetConsole', 'scrapy.extensions.memusage.MemoryUsage', 'scrapy.extensions.closespider.CloseSpider', 'scrapy.extensions.feedexport.FeedExporter', 'scrapy.extensions.logstats.LogStats', 'scrapy.extensions.throttle.AutoThrottle'] 2026-03-21 22:30:37 [scrapy.crawler] INFO: Overridden settings: {'AUTOTHROTTLE_ENABLED': True, 'BOT_NAME': 'news_scraper', 'CLOSESPIDER_TIMEOUT': 1800, 'CONCURRENT_REQUESTS': 4, 'DOWNLOAD_DELAY': 2, 'FEED_EXPORT_ENCODING': 'utf-8', 'LOG_FILE': '/opt/scrapyd/logs/news_scraper/thanhnien_timestamp/87b9e8d4257511f1a8c68655d067ffdb.log', 'NEWSPIDER_MODULE': 'news_scraper.spiders', 'REQUEST_FINGERPRINTER_IMPLEMENTATION': '2.7', 'ROBOTSTXT_OBEY': True, 'SPIDER_MODULES': ['news_scraper.spiders'], 'TWISTED_REACTOR': 'twisted.internet.asyncioreactor.AsyncioSelectorReactor'} 2026-03-21 22:30:37 [scrapy.middleware] INFO: Enabled downloader middlewares: ['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware', 'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware', 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware', 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware', 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware', 'news_scraper.middlewares.NewsScraperDownloaderMiddleware', 'scrapy.downloadermiddlewares.retry.RetryMiddleware', 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware', 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware', 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware', 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware', 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware', 'scrapy.downloadermiddlewares.stats.DownloaderStats'] 2026-03-21 22:30:38 [scrapy.middleware] INFO: Enabled spider middlewares: ['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware', 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware', 'scrapy.spidermiddlewares.referer.RefererMiddleware', 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware', 'scrapy.spidermiddlewares.depth.DepthMiddleware'] 2026-03-21 22:30:38 [scrapy.middleware] INFO: Enabled item pipelines: [] 2026-03-21 22:30:38 [scrapy.core.engine] INFO: Spider opened 2026-03-21 22:30:38 [botocore.hooks] DEBUG: Changing event name from creating-client-class.iot-data to creating-client-class.iot-data-plane 2026-03-21 22:30:38 [botocore.hooks] DEBUG: Changing event name from before-call.apigateway to before-call.api-gateway 2026-03-21 22:30:38 [botocore.hooks] DEBUG: Changing event name from request-created.machinelearning.Predict to request-created.machine-learning.Predict 2026-03-21 22:30:38 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.autoscaling.CreateLaunchConfiguration to before-parameter-build.auto-scaling.CreateLaunchConfiguration 2026-03-21 22:30:38 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.route53 to before-parameter-build.route-53 2026-03-21 22:30:38 [botocore.hooks] DEBUG: Changing event name from request-created.cloudsearchdomain.Search to request-created.cloudsearch-domain.Search 2026-03-21 22:30:38 [botocore.hooks] DEBUG: Changing event name from docs.*.autoscaling.CreateLaunchConfiguration.complete-section to docs.*.auto-scaling.CreateLaunchConfiguration.complete-section 2026-03-21 22:30:38 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.logs.CreateExportTask to before-parameter-build.cloudwatch-logs.CreateExportTask 2026-03-21 22:30:38 [botocore.hooks] DEBUG: Changing event name from docs.*.logs.CreateExportTask.complete-section to docs.*.cloudwatch-logs.CreateExportTask.complete-section 2026-03-21 22:30:38 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.cloudsearchdomain.Search to before-parameter-build.cloudsearch-domain.Search 2026-03-21 22:30:38 [botocore.hooks] DEBUG: Changing event name from docs.*.cloudsearchdomain.Search.complete-section to docs.*.cloudsearch-domain.Search.complete-section 2026-03-21 22:30:38 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/endpoints.json 2026-03-21 22:30:38 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/sdk-default-configuration.json 2026-03-21 22:30:38 [botocore.hooks] DEBUG: Event choose-service-name: calling handler 2026-03-21 22:30:38 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/s3/2006-03-01/service-2.json.gz 2026-03-21 22:30:38 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/s3/2006-03-01/endpoint-rule-set-1.json.gz 2026-03-21 22:30:38 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/partitions.json 2026-03-21 22:30:38 [botocore.hooks] DEBUG: Event creating-client-class.s3: calling handler 2026-03-21 22:30:38 [botocore.hooks] DEBUG: Event creating-client-class.s3: calling handler ._handler at 0x7f8dd6521940> 2026-03-21 22:30:38 [botocore.hooks] DEBUG: Event creating-client-class.s3: calling handler 2026-03-21 22:30:38 [botocore.endpoint] DEBUG: Setting s3 timeout as (60, 60) 2026-03-21 22:30:38 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/_retry.json 2026-03-21 22:30:38 [botocore.client] DEBUG: Registering retry handlers for service: s3 2026-03-21 22:30:38 [botocore.utils] DEBUG: Registering S3 region redirector handler 2026-03-21 22:30:38 [botocore.utils] DEBUG: Registering S3Express Identity Resolver 2026-03-21 22:30:38 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2026-03-21 22:30:38 [thanhnien_timestamp] INFO: Spider opened: thanhnien_timestamp 2026-03-21 22:30:38 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6024 2026-03-21 22:30:38 [scrapy.core.engine] DEBUG: Crawled (200) (referer: None) 2026-03-21 22:30:41 [scrapy.core.engine] DEBUG: Crawled (200) (referer: None) 2026-03-21 22:30:43 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/) 2026-03-21 22:30:45 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-03-21 22:30:45 [thanhnien_timestamp] INFO: 2026-03-22 05:02:00 not in 2026-03-22 05:10:00 to 2026-03-22 05:25:00 2026-03-21 22:30:47 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-03-21 22:30:47 [thanhnien_timestamp] INFO: 2026-03-22 05:03:00 not in 2026-03-22 05:10:00 to 2026-03-22 05:25:00 2026-03-21 22:30:49 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-03-21 22:30:49 [thanhnien_timestamp] INFO: 2026-03-22 05:03:00 not in 2026-03-22 05:10:00 to 2026-03-22 05:25:00 2026-03-21 22:30:52 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-03-21 22:30:52 [openai._base_client] DEBUG: Request options: {'method': 'post', 'url': '/chat/completions', 'files': None, 'json_data': {'messages': [{'role': 'user', 'content': "Act as a content analysis tool. I will provide you with a piece of content, and your task is to extract relevant tags (keywords or phrases) that summarize the main topics, themes, or ideas present in the text. The tags should be concise, specific, and useful for categorization or search purposes. Ignore common filler words (e.g., 'the', 'and', 'is') unless they are part of a specific concept or phrase. After analyzing the content, return the tags in a simple list format. Here is the content to analyze: Con giáp may mắn hôm nay: Con giáp nên chậm lại hôm nay:"}], 'model': 'gpt-4o-mini', 'max_tokens': 200, 'temperature': 0.3}} 2026-03-21 22:30:52 [openai._base_client] DEBUG: Sending HTTP Request: POST https://api.openai.com/v1/chat/completions 2026-03-21 22:30:52 [httpcore.connection] DEBUG: connect_tcp.started host='api.openai.com' port=443 local_address=None timeout=900 socket_options=None 2026-03-21 22:30:52 [httpcore.connection] DEBUG: connect_tcp.complete return_value= 2026-03-21 22:30:52 [httpcore.connection] DEBUG: start_tls.started ssl_context= server_hostname='api.openai.com' timeout=900 2026-03-21 22:30:52 [httpcore.connection] DEBUG: start_tls.complete return_value= 2026-03-21 22:30:52 [httpcore.http11] DEBUG: send_request_headers.started request= 2026-03-21 22:30:52 [httpcore.http11] DEBUG: send_request_headers.complete 2026-03-21 22:30:52 [httpcore.http11] DEBUG: send_request_body.started request= 2026-03-21 22:30:52 [httpcore.http11] DEBUG: send_request_body.complete 2026-03-21 22:30:52 [httpcore.http11] DEBUG: receive_response_headers.started request= 2026-03-21 22:30:53 [httpcore.http11] DEBUG: receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 21 Mar 2026 22:30:53 GMT'), (b'Content-Type', b'application/json'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'CF-Ray', b'9e0067522d5be88a-HKG'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'X-Content-Type-Options', b'nosniff'), (b'access-control-expose-headers', b'X-Request-ID'), (b'openai-organization', b'user-bmggli0qfnphtzkdehrnfdrn'), (b'openai-processing-ms', b'857'), (b'openai-project', b'proj_AqBCEfNib7E5LbrMYDz2oklk'), (b'openai-version', b'2020-10-01'), (b'x-openai-proxy-wasm', b'v0.1'), (b'x-ratelimit-limit-requests', b'30000'), (b'x-ratelimit-limit-tokens', b'150000000'), (b'x-ratelimit-remaining-requests', b'29999'), (b'x-ratelimit-remaining-tokens', b'149999855'), (b'x-ratelimit-reset-requests', b'2ms'), (b'x-ratelimit-reset-tokens', b'0s'), (b'x-request-id', b'req_48e8cfebdc724f86af6986a8c2e2d58f'), (b'Set-Cookie', b'__cf_bm=iAmXjYElTIKTf7QiXwl_uN9fpZPBG2arCHF9oJhopMo-1774132253-1.0.1.1-0T7xJoLWmQ1RJqn3xBztpGqmuND_BefsP9iC_18RcM_T4pelclo76Id9pw6qTZWgkOGzB1jCYc1.JTl2WnaD_IK3JbQyYZ8gKdlE6TkLAg0; path=/; expires=Sat, 21-Mar-26 23:00:53 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None'), (b'Vary', b'Accept-Encoding'), (b'Set-Cookie', b'_cfuvid=LK1Aujl60gmhUqqaeHyoD.hOFt_kQPJxVNiZHtbQT6A-1774132253812-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None'), (b'Server', b'cloudflare'), (b'Content-Encoding', b'gzip'), (b'alt-svc', b'h3=":443"; ma=86400')]) 2026-03-21 22:30:53 [httpx] INFO: HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK" 2026-03-21 22:30:53 [httpcore.http11] DEBUG: receive_response_body.started request= 2026-03-21 22:30:53 [httpcore.http11] DEBUG: receive_response_body.complete 2026-03-21 22:30:53 [httpcore.http11] DEBUG: response_closed.started 2026-03-21 22:30:53 [httpcore.http11] DEBUG: response_closed.complete 2026-03-21 22:30:53 [openai._base_client] DEBUG: HTTP Response: POST https://api.openai.com/v1/chat/completions "200 OK" Headers([('date', 'Sat, 21 Mar 2026 22:30:53 GMT'), ('content-type', 'application/json'), ('transfer-encoding', 'chunked'), ('connection', 'keep-alive'), ('cf-ray', '9e0067522d5be88a-HKG'), ('cf-cache-status', 'DYNAMIC'), ('strict-transport-security', 'max-age=31536000; includeSubDomains; preload'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'X-Request-ID'), ('openai-organization', 'user-bmggli0qfnphtzkdehrnfdrn'), ('openai-processing-ms', '857'), ('openai-project', 'proj_AqBCEfNib7E5LbrMYDz2oklk'), ('openai-version', '2020-10-01'), ('x-openai-proxy-wasm', 'v0.1'), ('x-ratelimit-limit-requests', '30000'), ('x-ratelimit-limit-tokens', '150000000'), ('x-ratelimit-remaining-requests', '29999'), ('x-ratelimit-remaining-tokens', '149999855'), ('x-ratelimit-reset-requests', '2ms'), ('x-ratelimit-reset-tokens', '0s'), ('x-request-id', 'req_48e8cfebdc724f86af6986a8c2e2d58f'), ('set-cookie', '__cf_bm=iAmXjYElTIKTf7QiXwl_uN9fpZPBG2arCHF9oJhopMo-1774132253-1.0.1.1-0T7xJoLWmQ1RJqn3xBztpGqmuND_BefsP9iC_18RcM_T4pelclo76Id9pw6qTZWgkOGzB1jCYc1.JTl2WnaD_IK3JbQyYZ8gKdlE6TkLAg0; path=/; expires=Sat, 21-Mar-26 23:00:53 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None'), ('vary', 'Accept-Encoding'), ('set-cookie', '_cfuvid=LK1Aujl60gmhUqqaeHyoD.hOFt_kQPJxVNiZHtbQT6A-1774132253812-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None'), ('server', 'cloudflare'), ('content-encoding', 'gzip'), ('alt-svc', 'h3=":443"; ma=86400')]) 2026-03-21 22:30:53 [openai._base_client] DEBUG: request_id: req_48e8cfebdc724f86af6986a8c2e2d58f 2026-03-21 22:30:53 [thanhnien_timestamp] INFO: Min timestamp: 2026-03-22 05:10:00, Published timestamp: 2026-03-22 05:15:00 2026-03-21 22:30:53 [urllib3.connectionpool] DEBUG: Starting new HTTP connection (1): tts-api:4444 2026-03-21 22:30:56 [urllib3.connectionpool] DEBUG: http://tts-api:4444 "POST /api/v2/text-to-speech HTTP/1.1" 200 409 2026-03-21 22:30:56 [scrapy.core.scraper] DEBUG: Scraped from <200 https://thanhnien.vn/tu-vi-ngay-22-thang-3-con-giap-nao-may-man-hom-nay-185260322003835162.htm> {'audio_url': 'https://lake-api.actable.ai/tts-data/kxxevtdt-2026-03-21%2022%3A30%3A53.mp3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=pmq7GsXVsXQZXqTM0hWE%2F20260321%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260321T223055Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=f130f2c1f406eec6afe09044f1d9b2d8d34a8b9bb36e383ff7fefd433870906b', 'author': None, 'category': 'Đời sống', 'content': 'Con giáp may mắn hôm nay: Con giáp nên chậm lại hôm nay:', 'description': 'Tử vi ngày 22 tháng 3 mang đến những gợi ý mang tính tham ' 'khảo cho 12 con giáp ngày cuối tuần. Vận khí thiên về sự tái ' 'tạo, ai biết nghỉ ngơi đúng cách sẽ đi xa hơn. Tài lộc hôm ' 'nay không nằm ở việc kiếm thêm, mà ở việc giữ được những gì ' 'đang có.', 'html_content': '
\n' '\n' '
\n' '\n' ' ' '
  1. Tuổi Tí trong tử vi ngày 22 ' 'tháng 3 có xu hướng muốn thu mình lại một chút để suy ' 'nghĩ rõ hơn về hướng đi sắp tới. Một buổi ở một mình, dọn ' 'dẹp không gian sống hoặc viết lại kế hoạch có thể giúp bạn ' '"reset" tinh thần. Tài lộc ổn định, phù hợp để rà soát chi ' 'tiêu.
  2. Tuổi Sửu hôm nay cảm thấy thoải mái ' 'khi mọi thứ diễn ra chậm lại. Bạn không cần phải cố gắng quá ' 'nhiều mà vẫn giữ được sự ổn định. Một ngày đơn giản nhưng dễ ' 'chịu. Tài chính an toàn.
  3. Tuổi Dần có thể ' 'nhận được lời rủ rê đi chơi, gặp gỡ hoặc tham gia hoạt động ' 'bên ngoài. Những kết nối này mang lại năng lượng tích cực ' 'hơn bạn nghĩ. Tài lộc không nổi bật nhưng tinh thần rất ' 'tốt.
  4. Tuổi Mão ngày 22 tháng 3 nên dành ' 'thời gian chăm sóc bản thân, cả về thể chất lẫn cảm xúc. Một ' 'thay đổi nhỏ như ngủ đủ giấc hay ăn uống lành mạnh cũng giúp ' 'bạn cải thiện năng lượng. Tài lộc ở mức trung ' 'bình.
  5. Tuổi Thìn dễ có những suy nghĩ sâu ' 'hơn về định hướng cá nhân. Đây là lúc bạn nhìn lại xem mình ' 'đang đi đúng hướng chưa. Sự rõ ràng này giúp bạn tự tin hơn. ' 'Tài chính đủ dùng.
  6. Tuổi Tị hôm nay hợp ' 'với những hoạt động mang tính "chậm" như đọc sách, học một ' 'kỹ năng mới hoặc thiền nhẹ. Khi bạn giảm tốc, bạn lại nhìn ' 'thấy nhiều điều hơn. Tài lộc giữ ở mức ổn ' 'định.
  7. Tuổi Ngọ dễ bị cuốn theo những kế ' 'hoạch bất chợt. Điều này không xấu, nhưng bạn nên cân đối ' 'thời gian và chi tiêu. Tài chính ở mức vừa ' 'phải.
  8. Tuổi Mùi có một ngày khá ấm áp khi ' 'dành thời gian cho gia đình hoặc người thân. Những kết nối ' 'này giúp bạn cảm thấy vững vàng hơn. Tài lộc đủ ' 'dùng.
  9. Tuổi Thân trong tử vi ngày ' '22 tháng 3 có thể nhận ra một cơ hội từ một câu ' 'chuyện rất bình thường. Sự tinh ý giúp bạn nhìn thấy điều ' 'người khác bỏ qua. Vì vậy, tuổi Thân là con giáp ' 'may mắn hôm nay khi tài lộc có thể đến từ những điều ' 'nhỏ.
  10. Tuổi Dậu nên tránh suy nghĩ quá ' 'nhiều về công việc trong ngày nghỉ. Khi bạn cho mình khoảng ' 'nghỉ đúng nghĩa, hiệu suất tuần sau sẽ tốt hơn. Tài chính an ' 'toàn.
  11. Tuổi Tuất hôm nay có xu hướng dọn ' 'dẹp, sắp xếp lại mọi thứ từ không gian sống đến suy nghĩ cá ' 'nhân. Điều này giúp bạn cảm thấy "nhẹ đầu" hơn rõ rệt. Tài lộc ở mức trung ' 'bình.
  12. Tuổi Hợi dễ cảm thấy lạc quan và ' 'muốn làm điều gì đó mới mẻ, dù rất nhỏ. Một thay đổi nhỏ hôm ' 'nay có thể tạo hiệu ứng tích cực cho những ngày sau. Tài ' 'chính đủ dùng.
Tử vi ngày '
                 '22 tháng 3: Con giáp nào may mắn hôm nay? - Ảnh 1.

Tử vi hôm nay chỉ mang ' 'tính tham khảo và giải trí. Đôi khi tiến lên không phải là ' 'làm nhiều hơn, mà là biết dừng lại đúng lúc để đi tiếp vững ' 'vàng hơn

Con giáp may mắn hôm ' 'nay:

  • Tuổi Thân: Nhạy bén, dễ nhìn ra cơ hội ' 'nhỏ về tài lộc.
  • Tuổi Tí: "Reset" đúng cách giúp ' 'mở ra hướng đi mới.

Con giáp nên chậm lại ' 'hôm nay:

  • Tuổi Ngọ: Tránh chi tiêu theo cảm ' 'hứng.
  • Tuổi Dậu: Đừng mang áp lực công việc vào ' 'ngày nghỉ.


\n' ' \n' '\n' '\n' ' \n' '
\n' ' \n' '\n' ' \n' ' \n' ' \n' ' \n' ' \n' '\n' '
\n' '\n' '
', 'md_content': '\n' '\n' '1. **Tuổi Tí** trong [tử vi ngày 22 tháng ' '3](https://thanhnien.vn/tu-vi-ngay-22-thang-3.html "tử vi ngày ' '22 tháng 3") có xu hướng muốn thu mình lại một chút để suy ' 'nghĩ rõ hơn về hướng đi sắp tới. Một buổi ở một mình, dọn dẹp ' 'không gian sống hoặc viết lại kế hoạch có thể giúp bạn "reset" ' 'tinh thần. Tài lộc ổn định, phù hợp để rà soát chi tiêu.\n' '2. **Tuổi Sửu** hôm nay cảm thấy thoải mái khi mọi thứ diễn ra ' 'chậm lại. Bạn không cần phải cố gắng quá nhiều mà vẫn giữ được ' 'sự ổn định. Một ngày đơn giản nhưng dễ chịu. Tài chính an ' 'toàn.\n' '3. **Tuổi Dần** có thể nhận được lời rủ rê đi chơi, gặp gỡ ' 'hoặc tham gia hoạt động bên ngoài. Những kết nối này mang lại ' 'năng lượng tích cực hơn bạn nghĩ. Tài lộc không nổi bật nhưng ' 'tinh thần rất tốt.\n' '4. **Tuổi Mão** ngày 22 tháng 3 nên dành thời gian chăm sóc ' 'bản thân, cả về thể chất lẫn cảm xúc. Một thay đổi nhỏ như ngủ ' 'đủ giấc hay ăn uống lành mạnh cũng giúp bạn cải thiện năng ' 'lượng. Tài lộc ở mức trung bình.\n' '5. **Tuổi Thìn** dễ có những suy nghĩ sâu hơn về định hướng cá ' 'nhân. Đây là lúc bạn nhìn lại xem mình đang đi đúng hướng ' 'chưa. Sự rõ ràng này giúp bạn tự tin hơn. Tài chính đủ dùng.\n' '6. **Tuổi Tị** hôm nay hợp với những hoạt động mang tính ' '"chậm" như đọc sách, học một kỹ năng mới hoặc thiền nhẹ. Khi ' 'bạn giảm tốc, bạn lại nhìn thấy nhiều điều hơn. Tài lộc giữ ở ' 'mức ổn định.\n' '7. **Tuổi Ngọ** dễ bị cuốn theo những kế hoạch bất chợt. Điều ' 'này không xấu, nhưng bạn nên cân đối thời gian và chi tiêu. ' 'Tài chính ở mức vừa phải.\n' '8. **Tuổi Mùi** có một ngày khá ấm áp khi dành thời gian cho ' 'gia đình hoặc người thân. Những kết nối này giúp bạn cảm thấy ' 'vững vàng hơn. Tài lộc đủ dùng.\n' '9. **Tuổi Thân** trong [tử vi ngày 22 tháng ' '3](https://thanhnien.vn/tu-vi-ngay-19-thang-3-con-giap-nao-may-man-hom-nay-185260318234248179.htm ' '"tử vi ngày 22 tháng 3 ") có thể nhận ra một cơ hội từ một câu ' 'chuyện rất bình thường. Sự tinh ý giúp bạn nhìn thấy điều ' 'người khác bỏ qua. Vì vậy, tuổi Thân là [con giáp may mắn hôm ' 'nay](https://thanhnien.vn/tu-vi-ngay-20-thang-3-con-giap-nao-may-man-hom-nay-185260319223125698.htm ' '"con giáp may mắn hôm nay") khi tài lộc có thể đến từ những ' 'điều nhỏ.\n' '10. **Tuổi Dậu** nên tránh suy nghĩ quá nhiều về công việc ' 'trong ngày nghỉ. Khi bạn cho mình khoảng nghỉ đúng nghĩa, hiệu ' 'suất tuần sau sẽ tốt hơn. Tài chính an toàn.\n' '11. **Tuổi Tuất** hôm nay có xu hướng dọn dẹp, sắp xếp lại mọi ' 'thứ từ không gian sống đến suy nghĩ cá nhân. Điều này giúp bạn ' 'cảm thấy "nhẹ đầu" hơn rõ rệt. [Tài ' 'lộc](https://thanhnien.vn/chu-tich-va-tong-thu-ky-fifa-gui-qua-dac-biet-den-chu-tich-vff-tran-quoc-tuan-chuc-tet-tai-loc-18526021614134943.htm ' '"Tài lộc") ở mức trung bình.\n' '12. **Tuổi Hợi** dễ cảm thấy lạc quan và muốn làm điều gì đó ' 'mới mẻ, dù rất nhỏ. Một thay đổi nhỏ hôm nay có thể tạo hiệu ' 'ứng tích cực cho những ngày sau. Tài chính đủ dùng.\n' '\n' '![Tử vi ngày 22 tháng 3: Con giáp nào may mắn hôm nay? - Ảnh ' '1.](https://images2.thanhnien.vn/thumb_w/640/528068263637045248/2026/2/27/horse-2-1772211853020762535585.jpg)Tử ' 'vi hôm nay chỉ mang tính tham khảo và giải trí. Đôi khi tiến ' 'lên không phải là làm nhiều hơn, mà là biết dừng lại đúng lúc ' 'để đi tiếp vững vàng hơn\n' '\n' '**Con giáp may mắn hôm nay:**\n' '\n' '* Tuổi Thân: Nhạy bén, dễ nhìn ra cơ hội nhỏ về tài lộc.\n' '* Tuổi Tí: "Reset" đúng cách giúp mở ra hướng đi mới.\n' '\n' '**Con giáp nên chậm lại hôm nay:**\n' '\n' '* Tuổi Ngọ: Tránh chi tiêu theo cảm hứng.\n' '* Tuổi Dậu: Đừng mang áp lực công việc vào ngày nghỉ.\n' '### \n' '\n' '\n' '\n' ' //Chèn ads giữa bài\n' ' (runinit = window.runinit || []).push(function () {\n' ' //Nếu k chạy ads thì return\n' " if (typeof \\_chkPrLink != 'undefined' && \\_chkPrLink)\n" ' return;\n' '\n' '\n' ' var mutexAds = \'\';\n' ' var content = $(\'[data-role="content"]\');\n' ' if (content.length > 0) {\n' ' var childNodes = content[0].childNodes;\n' ' for (i = 0; i < childNodes.length; i++) {\n' ' var childNode = childNodes[i];\n' '\n' ' var isPhotoOrVideo = false;\n' " if (childNode.nodeName.toLowerCase() == 'div') {\n" ' // kiem tra xem co la anh khong?\n' " var type = $(childNode).attr('class') + '';\n" '\n' " if (type.indexOf('VCSortableInPreviewMode') >= 0) {\n" ' isPhotoOrVideo = true;\n' ' }\n' ' }\n' '\n' ' try {\n' ' if ((i >= childNodes.length / 2 - 1) && (i < ' 'childNodes.length / 2) && !isPhotoOrVideo) {\n' ' if (i <= childNodes.length - 3) {\n' ' childNode.after(htmlToElement(mutexAds));\n' ' arfAsync.push("l2srqb41");\n' ' }\n' ' break;\n' ' }\n' ' }\n' ' catch (e) { }\n' ' }\n' ' }\n' ' });\n' ' function htmlToElement(html) {\n' " var template = document.createElement('template');\n" ' template.innerHTML = html;\n' ' return template.content.firstChild;\n' ' }\n' '\n' '\n' '\n' ' if (window.pageSettings && pageSettings.allow3rd && (typeof ' "window.\\_isAdsHidden === 'undefined' || " '!window.\\_isAdsHidden)) {\n' ' if (!laNuocNgoai) {\n' ' (function (w, q) {\n' ' w[q] = w[q] || [];\n' ' w[q].push(["\\_mgc.load"]);\n' ' })(window, "\\_mgq");\n' ' }\n' ' }\n' ' \n' '\n' '\n' ' (function() {\n' ' if (!(window.pageSettings && pageSettings.allow3rd && (typeof ' "window.\\_isAdsHidden === 'undefined' || " '!window.\\_isAdsHidden))) return;\n' " if (typeof window.laNuocNgoai === 'undefined' || " '!window.laNuocNgoai) return; // chỉ chạy khi laNuocNgoai true\n' '\n' " var containerSelector = 'div.detail-cmain';\n" ' var root = document.querySelector(containerSelector);\n' ' if (!root) return;\n' '\n' ' // Thu thập figure + p (p không nằm trong figure)\n' " var figures = Array.from(root.querySelectorAll('figure'));\n" ' var paragraphs = ' "Array.from(root.querySelectorAll('p')).filter(function(p){ " "return !p.closest('figure'); });\n" ' var elements = figures.concat(paragraphs); // NodeList vốn đã ' 'theo DOM order => không cần sort\n' ' if (!elements.length) return;\n' '\n' ' var target = elements[Math.floor(elements.length / 2)]; // ' 'giữa bài\n' ' if (!target || !target.parentNode) return;\n' '\n' " var newDiv = document.createElement('div');\n" " newDiv.id = 'taboola-mid-article-widget';\n" ' target.parentNode.insertBefore(newDiv, target.nextSibling);\n' '\n' ' window.\\_taboola = window.\\_taboola || [];\n' ' window.\\_taboola.push({\n' " mode: 'thumbnails-4x1',\n" " container: 'taboola-mid-article-widget',\n" " placement: 'Mid Article Widget',\n" " target\\_type: 'mix'\n" ' });\n' ' })();\n' ' \n' '\n', 'published_date': datetime.date(2026, 3, 22), 'published_timestamp': datetime.datetime(2026, 3, 22, 5, 15), 'source': 'ThanhNien', 'tags': ['Con giáp may mắn', 'Con giáp chậm lại', 'Tử vi hôm nay', 'Dự đoán vận mệnh', 'Chiêm tinh học'], 'title': 'Tử vi ngày 22 tháng 3: Con giáp nào may mắn hôm nay?', 'url': 'https://thanhnien.vn/tu-vi-ngay-22-thang-3-con-giap-nao-may-man-hom-nay-185260322003835162.htm', 'voice': 'HN-Nam-1-BL'} 2026-03-21 22:30:56 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-03-21 22:30:56 [thanhnien_timestamp] INFO: 2026-03-21 is out of date range: from 2026-03-22 to 2026-03-22, skipping article: https://thanhnien.vn/ha-noi-phat-2-nguoi-rao-ban-suat-ngoai-giao-suat-noi-bo-nha-o-xa-hoi-185260321224824105.htm 2026-03-21 22:30:58 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-03-21 22:30:58 [thanhnien_timestamp] INFO: 2026-03-22 00:04:00 not in 2026-03-22 05:10:00 to 2026-03-22 05:25:00 2026-03-21 22:31:00 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-03-21 22:31:00 [httpcore.connection] DEBUG: close.started 2026-03-21 22:31:00 [httpcore.connection] DEBUG: close.complete 2026-03-21 22:31:00 [thanhnien_timestamp] INFO: 2026-03-22 00:22:00 not in 2026-03-22 05:10:00 to 2026-03-22 05:25:00 2026-03-21 22:31:02 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-03-21 22:31:02 [thanhnien_timestamp] INFO: 2026-03-22 00:24:00 not in 2026-03-22 05:10:00 to 2026-03-22 05:25:00 2026-03-21 22:31:04 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-03-21 22:31:04 [thanhnien_timestamp] INFO: 2026-03-22 00:29:00 not in 2026-03-22 05:10:00 to 2026-03-22 05:25:00 2026-03-21 22:31:07 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-03-21 22:31:07 [thanhnien_timestamp] INFO: 2026-03-22 00:42:00 not in 2026-03-22 05:10:00 to 2026-03-22 05:25:00 2026-03-21 22:31:08 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-03-21 22:31:08 [thanhnien_timestamp] INFO: 2026-03-22 03:00:00 not in 2026-03-22 05:10:00 to 2026-03-22 05:25:00 2026-03-21 22:31:10 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-03-21 22:31:11 [thanhnien_timestamp] INFO: 2026-03-22 03:59:00 not in 2026-03-22 05:10:00 to 2026-03-22 05:25:00 2026-03-21 22:31:13 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-03-21 22:31:13 [thanhnien_timestamp] INFO: 2026-03-22 04:00:00 not in 2026-03-22 05:10:00 to 2026-03-22 05:25:00 2026-03-21 22:31:14 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-03-21 22:31:14 [thanhnien_timestamp] INFO: 2026-03-22 04:38:00 not in 2026-03-22 05:10:00 to 2026-03-22 05:25:00 2026-03-21 22:31:17 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-03-21 22:31:17 [thanhnien_timestamp] INFO: 2026-03-22 05:00:00 not in 2026-03-22 05:10:00 to 2026-03-22 05:25:00 2026-03-21 22:31:19 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-03-21 22:31:19 [thanhnien_timestamp] INFO: 2026-03-22 05:00:00 not in 2026-03-22 05:10:00 to 2026-03-22 05:25:00 2026-03-21 22:31:22 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-03-21 22:31:22 [openai._base_client] DEBUG: Request options: {'method': 'post', 'url': '/chat/completions', 'files': None, 'json_data': {'messages': [{'role': 'user', 'content': 'Act as a content analysis tool. I will provide you with a piece of content, and your task is to extract relevant tags (keywords or phrases) that summarize the main topics, themes, or ideas present in the text. The tags should be concise, specific, and useful for categorization or search purposes. Ignore common filler words (e.g., \'the\', \'and\', \'is\') unless they are part of a specific concept or phrase. After analyzing the content, return the tags in a simple list format. Here is the content to analyze: Tổng thống Trump hôm qua 21.3 tuyên bố Mỹ gần đạt được các mục tiêu trong chiến dịch tấn công Iran và sẽ cân nhắc thu hẹp chiến dịch quân sự. Ông Trump nêu ra 5 mục tiêu, với điểm chính là làm suy yếu năng lực quân sự Iran, ngăn Tehran sở hữu vũ khí hạt nhân và bảo vệ đồng minh ở Trung Đông . Theo trang Axios , thông điệp nêu trên là tín hiệu rõ ràng nhất cho thấy chính quyền Mỹ chủ động tìm giải pháp chấm dứt cuộc chiến, so với những tuyên bố mơ hồ trước đây. Dù vậy, AP cho hay động thái quân sự gần đây của Washington lại đặt ra những kịch bản leo thang mới. Cụ thể, AP dẫn lời quan chức Mỹ thạo tin tiết lộ 3 tàu tấn công đổ bộ của quân đội cùng khoảng 2.500 lính thủy quân lục chiến Mỹ đã được điều động từ cảng ở bang California đến Trung Đông. Tuần trước, những con tàu đổ bộ khác của Mỹ đang hoạt động ở châu Á cũng được điều đến Trung Đông. Ngoài ra, Nhà Trắng cũng vừa thông báo sẽ đề nghị quốc hội cấp ngân sách 200 tỉ USD cho chiến dịch quân sự. Những diễn biến quân sự khiến giới quan sát đặt ra khả năng Mỹ có thể tiến hành chiến dịch trên bộ. Theo Đài CBS News hôm qua dẫn các nguồn thạo tin, việc đưa quân Mỹ đổ bộ Iran là một phương án đang được Lầu Năm Góc nghiên cứu kỹ lưỡng. Hôm 19.3, ông Trump khẳng định: "Tôi không hề đưa quân đến nơi nào cả. Nếu có thì tôi cũng sẽ không tiết lộ". Cũng trong tuyên bố hôm qua, Tổng thống Trump nêu rằng eo biển Hormuz sẽ phải được canh giữ và kiểm soát khi cần, bởi những nước sử dụng nơi này, trong khi Mỹ thì không sử dụng tuyến eo biển này. Dù Mỹ không bị lệ thuộc vào tuyến vận chuyển dầu mỏ qua Hormuz, việc khôi phục lại hoạt động vận tải được xem là vấn đề cấp bách để hạ nhiệt cú sốc về giá năng lượng toàn cầu. Tuy nhiên, các quan chức Mỹ thừa nhận đây là bài toán khó khăn. Theo CNN, một quan chức tình báo Mỹ cho rằng Iran có ưu thế thực chất tại eo biển Hormuz và hiện chưa có giải pháp rõ ràng để Washington gây sức ép buộc Tehran mở cửa hoàn toàn eo biển. Mỹ đã đưa ra những quyết sách nhằm kiểm soát nguồn cung dầu, từ việc xả kho dự trữ chiến lược, nới lỏng cấm vận với dầu Nga và mới nhất là dầu Iran. Song, đây chỉ được xem là giải pháp ngắn hạn và không thể giải quyết dứt điểm gián đoạn chuỗi cung ứng năng lượng. Theo dữ liệu của BBC, kể từ đầu tháng 3, có chưa đến 100 tàu đi qua eo biển Hormuz . Lưu lượng hàng hải ở tuyến đường này giảm đến 95% so với thời điểm trước khi xung đột bùng phát. Các dự báo cho rằng thế giới sẽ hứng chịu những hậu quả nặng nề từ khủng hoảng kinh tế sâu rộng, đặc biệt trong trường hợp Mỹ không giải quyết tình trạng tắc nghẽn ở Hormuz. Trong cuộc phỏng vấn với Kyodo News ngày 21.3, Ngoại trưởng Iran Abbas Araghchi nhắc lại tuyên bố Tehran không đóng cửa eo biển Hormuz, mà đang hạn chế những tàu thuộc về các nước tham gia tấn công Iran. Ông tuyên bố Iran sẽ hỗ trợ tàu Nhật Bản đi qua Hormuz. Ngoại trưởng Iran cũng khẳng định không tìm kiếm ngừng bắn, mà phải có thỏa thuận chấm dứt cuộc chiến và đảm bảo nó không tái diễn. Tổng thống Trump cũng bác bỏ triển vọng ngừng bắn với Iran. Cơ sở hạt nhân Natanz tại Iran đã bị trúng đòn không kích hôm qua 21.3, trong thời điểm chiến sự Trung Đông bước qua tuần thứ 4. Theo Al Jazeera, không có báo cáo về sự cố rò rỉ vật liệu phóng xạ và cư dân khu vực xung quanh nhà máy không gặp nguy hiểm. Cơ sở Natanz từng bị liên quân Mỹ - Israel tập kích trong tuần đầu tiên của xung đột. Trước đó, người phát ngôn quân đội Iran Abolfazl Shekarchi cảnh báo quan chức Mỹ và Israel sẽ bị nhắm mục tiêu, kể cả khi họ đang ở nước ngoài nghỉ dưỡng hay du lịch.'}], 'model': 'gpt-4o-mini', 'max_tokens': 200, 'temperature': 0.3}} 2026-03-21 22:31:22 [openai._base_client] DEBUG: Sending HTTP Request: POST https://api.openai.com/v1/chat/completions 2026-03-21 22:31:22 [httpcore.connection] DEBUG: connect_tcp.started host='api.openai.com' port=443 local_address=None timeout=900 socket_options=None 2026-03-21 22:31:22 [httpcore.connection] DEBUG: connect_tcp.complete return_value= 2026-03-21 22:31:22 [httpcore.connection] DEBUG: start_tls.started ssl_context= server_hostname='api.openai.com' timeout=900 2026-03-21 22:31:22 [httpcore.connection] DEBUG: start_tls.complete return_value= 2026-03-21 22:31:22 [httpcore.http11] DEBUG: send_request_headers.started request= 2026-03-21 22:31:22 [httpcore.http11] DEBUG: send_request_headers.complete 2026-03-21 22:31:22 [httpcore.http11] DEBUG: send_request_body.started request= 2026-03-21 22:31:22 [httpcore.http11] DEBUG: send_request_body.complete 2026-03-21 22:31:22 [httpcore.http11] DEBUG: receive_response_headers.started request= 2026-03-21 22:31:25 [httpcore.http11] DEBUG: receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 21 Mar 2026 22:31:25 GMT'), (b'Content-Type', b'application/json'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'CF-Ray', b'9e00680ddac3b6a3-HKG'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Server', b'cloudflare'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'X-Content-Type-Options', b'nosniff'), (b'access-control-expose-headers', b'X-Request-ID'), (b'openai-organization', b'user-bmggli0qfnphtzkdehrnfdrn'), (b'openai-processing-ms', b'2723'), (b'openai-project', b'proj_AqBCEfNib7E5LbrMYDz2oklk'), (b'openai-version', b'2020-10-01'), (b'x-openai-proxy-wasm', b'v0.1'), (b'x-ratelimit-limit-requests', b'30000'), (b'x-ratelimit-limit-tokens', b'150000000'), (b'x-ratelimit-remaining-requests', b'29999'), (b'x-ratelimit-remaining-tokens', b'149998717'), (b'x-ratelimit-reset-requests', b'2ms'), (b'x-ratelimit-reset-tokens', b'0s'), (b'x-request-id', b'req_392ad03520e34e1b92a2e1d357adb2ca'), (b'set-cookie', b'__cf_bm=PJZmdzdMZBxCUHUZ7iwiTi7vY7BAv7oRZy2FGkfpm.Y-1774132282.532346-1.0.1.1-T0YHcByaUqy9xN1TtIIPK6SMyli9XRDoTP7dJoHcNQYUJ8xCm66WHOfxQ8OdgvN8H2lsBtQfMxRsZWMreB2ul0yZFgifzCu8S_vge5tlgB6U7vPfgG2B4TRa39xOZeFb; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Sat, 21 Mar 2026 23:01:25 GMT'), (b'Content-Encoding', b'gzip'), (b'alt-svc', b'h3=":443"; ma=86400')]) 2026-03-21 22:31:25 [httpx] INFO: HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK" 2026-03-21 22:31:25 [httpcore.http11] DEBUG: receive_response_body.started request= 2026-03-21 22:31:25 [httpcore.http11] DEBUG: receive_response_body.complete 2026-03-21 22:31:25 [httpcore.http11] DEBUG: response_closed.started 2026-03-21 22:31:25 [httpcore.http11] DEBUG: response_closed.complete 2026-03-21 22:31:25 [openai._base_client] DEBUG: HTTP Response: POST https://api.openai.com/v1/chat/completions "200 OK" Headers({'date': 'Sat, 21 Mar 2026 22:31:25 GMT', 'content-type': 'application/json', 'transfer-encoding': 'chunked', 'connection': 'keep-alive', 'cf-ray': '9e00680ddac3b6a3-HKG', 'cf-cache-status': 'DYNAMIC', 'server': 'cloudflare', 'strict-transport-security': 'max-age=31536000; includeSubDomains; preload', 'x-content-type-options': 'nosniff', 'access-control-expose-headers': 'X-Request-ID', 'openai-organization': 'user-bmggli0qfnphtzkdehrnfdrn', 'openai-processing-ms': '2723', 'openai-project': 'proj_AqBCEfNib7E5LbrMYDz2oklk', 'openai-version': '2020-10-01', 'x-openai-proxy-wasm': 'v0.1', 'x-ratelimit-limit-requests': '30000', 'x-ratelimit-limit-tokens': '150000000', 'x-ratelimit-remaining-requests': '29999', 'x-ratelimit-remaining-tokens': '149998717', 'x-ratelimit-reset-requests': '2ms', 'x-ratelimit-reset-tokens': '0s', 'x-request-id': 'req_392ad03520e34e1b92a2e1d357adb2ca', 'set-cookie': '__cf_bm=PJZmdzdMZBxCUHUZ7iwiTi7vY7BAv7oRZy2FGkfpm.Y-1774132282.532346-1.0.1.1-T0YHcByaUqy9xN1TtIIPK6SMyli9XRDoTP7dJoHcNQYUJ8xCm66WHOfxQ8OdgvN8H2lsBtQfMxRsZWMreB2ul0yZFgifzCu8S_vge5tlgB6U7vPfgG2B4TRa39xOZeFb; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Sat, 21 Mar 2026 23:01:25 GMT', 'content-encoding': 'gzip', 'alt-svc': 'h3=":443"; ma=86400'}) 2026-03-21 22:31:25 [openai._base_client] DEBUG: request_id: req_392ad03520e34e1b92a2e1d357adb2ca 2026-03-21 22:31:25 [thanhnien_timestamp] INFO: Min timestamp: 2026-03-22 05:10:00, Published timestamp: 2026-03-22 05:25:00 2026-03-21 22:31:25 [httpcore.connection] DEBUG: close.started 2026-03-21 22:31:25 [httpcore.connection] DEBUG: close.complete 2026-03-21 22:31:25 [urllib3.connectionpool] DEBUG: Starting new HTTP connection (1): tts-api:4444 2026-03-21 22:32:33 [urllib3.connectionpool] DEBUG: http://tts-api:4444 "POST /api/v2/text-to-speech HTTP/1.1" 200 413 2026-03-21 22:32:33 [scrapy.core.scraper] DEBUG: Scraped from <200 https://thanhnien.vn/toan-tinh-moi-cua-ong-trump-cho-chien-dich-trung-dong-185260321224805928.htm> {'audio_url': 'https://lake-api.actable.ai/tts-data/ntaehcex-2026-03-21%2022%3A31%3A50.mp3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=pmq7GsXVsXQZXqTM0hWE%2F20260321%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260321T223231Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=3568aa97556b720fabf89efa8a09cdcef5b688d8e2789063e24781d360fa1668', 'author': None, 'category': 'Thế giới', 'content': 'Tổng thống Trump hôm qua 21.3 tuyên bố Mỹ gần đạt được các mục ' 'tiêu trong chiến dịch tấn công Iran và sẽ cân nhắc thu hẹp chiến ' 'dịch quân sự. Ông Trump nêu ra 5 mục tiêu, với điểm chính là làm ' 'suy yếu năng lực quân sự Iran, ngăn Tehran sở hữu vũ khí hạt nhân ' 'và bảo vệ đồng minh ở Trung Đông . Theo trang Axios , thông điệp ' 'nêu trên là tín hiệu rõ ràng nhất cho thấy chính quyền Mỹ chủ ' 'động tìm giải pháp chấm dứt cuộc chiến, so với những tuyên bố mơ ' 'hồ trước đây. Dù vậy, AP cho hay động thái quân sự gần đây của ' 'Washington lại đặt ra những kịch bản leo thang mới. Cụ thể, AP ' 'dẫn lời quan chức Mỹ thạo tin tiết lộ 3 tàu tấn công đổ bộ của ' 'quân đội cùng khoảng 2.500 lính thủy quân lục chiến Mỹ đã được ' 'điều động từ cảng ở bang California đến Trung Đông. Tuần trước, ' 'những con tàu đổ bộ khác của Mỹ đang hoạt động ở châu Á cũng được ' 'điều đến Trung Đông. Ngoài ra, Nhà Trắng cũng vừa thông báo sẽ đề ' 'nghị quốc hội cấp ngân sách 200 tỉ USD cho chiến dịch quân sự. ' 'Những diễn biến quân sự khiến giới quan sát đặt ra khả năng Mỹ có ' 'thể tiến hành chiến dịch trên bộ. Theo Đài CBS News hôm qua dẫn ' 'các nguồn thạo tin, việc đưa quân Mỹ đổ bộ Iran là một phương án ' 'đang được Lầu Năm Góc nghiên cứu kỹ lưỡng. Hôm 19.3, ông Trump ' 'khẳng định: "Tôi không hề đưa quân đến nơi nào cả. Nếu có thì tôi ' 'cũng sẽ không tiết lộ". Cũng trong tuyên bố hôm qua, Tổng thống ' 'Trump nêu rằng eo biển Hormuz sẽ phải được canh giữ và kiểm soát ' 'khi cần, bởi những nước sử dụng nơi này, trong khi Mỹ thì không ' 'sử dụng tuyến eo biển này. Dù Mỹ không bị lệ thuộc vào tuyến vận ' 'chuyển dầu mỏ qua Hormuz, việc khôi phục lại hoạt động vận tải ' 'được xem là vấn đề cấp bách để hạ nhiệt cú sốc về giá năng lượng ' 'toàn cầu. Tuy nhiên, các quan chức Mỹ thừa nhận đây là bài toán ' 'khó khăn. Theo CNN, một quan chức tình báo Mỹ cho rằng Iran có ưu ' 'thế thực chất tại eo biển Hormuz và hiện chưa có giải pháp rõ ' 'ràng để Washington gây sức ép buộc Tehran mở cửa hoàn toàn eo ' 'biển. Mỹ đã đưa ra những quyết sách nhằm kiểm soát nguồn cung ' 'dầu, từ việc xả kho dự trữ chiến lược, nới lỏng cấm vận với dầu ' 'Nga và mới nhất là dầu Iran. Song, đây chỉ được xem là giải pháp ' 'ngắn hạn và không thể giải quyết dứt điểm gián đoạn chuỗi cung ' 'ứng năng lượng. Theo dữ liệu của BBC, kể từ đầu tháng 3, có chưa ' 'đến 100 tàu đi qua eo biển Hormuz . Lưu lượng hàng hải ở tuyến ' 'đường này giảm đến 95% so với thời điểm trước khi xung đột bùng ' 'phát. Các dự báo cho rằng thế giới sẽ hứng chịu những hậu quả ' 'nặng nề từ khủng hoảng kinh tế sâu rộng, đặc biệt trong trường ' 'hợp Mỹ không giải quyết tình trạng tắc nghẽn ở Hormuz. Trong cuộc ' 'phỏng vấn với Kyodo News ngày 21.3, Ngoại trưởng Iran Abbas ' 'Araghchi nhắc lại tuyên bố Tehran không đóng cửa eo biển Hormuz, ' 'mà đang hạn chế những tàu thuộc về các nước tham gia tấn công ' 'Iran. Ông tuyên bố Iran sẽ hỗ trợ tàu Nhật Bản đi qua Hormuz. ' 'Ngoại trưởng Iran cũng khẳng định không tìm kiếm ngừng bắn, mà ' 'phải có thỏa thuận chấm dứt cuộc chiến và đảm bảo nó không tái ' 'diễn. Tổng thống Trump cũng bác bỏ triển vọng ngừng bắn với Iran. ' 'Cơ sở hạt nhân Natanz tại Iran đã bị trúng đòn không kích hôm qua ' '21.3, trong thời điểm chiến sự Trung Đông bước qua tuần thứ 4. ' 'Theo Al Jazeera, không có báo cáo về sự cố rò rỉ vật liệu phóng ' 'xạ và cư dân khu vực xung quanh nhà máy không gặp nguy hiểm. Cơ ' 'sở Natanz từng bị liên quân Mỹ - Israel tập kích trong tuần đầu ' 'tiên của xung đột. Trước đó, người phát ngôn quân đội Iran ' 'Abolfazl Shekarchi cảnh báo quan chức Mỹ và Israel sẽ bị nhắm mục ' 'tiêu, kể cả khi họ đang ở nước ngoài nghỉ dưỡng hay du lịch.', 'description': 'Trong khi chiến sự Trung Đông đã bước sang tuần thứ 4, Tổng ' 'thống Mỹ Donald Trump khiến dư luận khó hiểu về cách giải ' 'quyết xung đột với Iran và cuộc khủng hoảng năng lượng.', 'html_content': '
\n' '\n' '
\n' '\n' ' ' '

Kịch bản đổ bộ Iran

Tổng thống Trump hôm qua 21.3 ' 'tuyên bố Mỹ gần đạt được các mục tiêu trong chiến dịch tấn ' 'công Iran và sẽ cân nhắc thu hẹp chiến dịch quân sự. Ông ' 'Trump nêu ra 5 mục tiêu, với điểm chính là làm suy yếu năng ' 'lực quân sự Iran, ngăn Tehran sở hữu vũ khí hạt nhân và bảo ' 'vệ đồng minh ở Trung Đông.

Toan tính '
                 'mới của ông Trump cho chiến dịch Trung Đông - Ảnh 1.

Người dân tại TP.Tehran ' 'dự tang lễ người phát ngôn Lực lượng Vệ binh cách mạng Hồi ' 'giáo (IRGC) Ali Mohammad Naeini vào ngày ' '21.3

Ảnh: ' 'AP

Theo trang Axios, thông điệp ' 'nêu trên là tín hiệu rõ ràng nhất cho thấy chính quyền Mỹ ' 'chủ động tìm giải pháp chấm dứt cuộc chiến, so với những ' 'tuyên bố mơ hồ trước đây. Dù vậy, AP cho hay động thái quân ' 'sự gần đây của Washington lại đặt ra những kịch bản leo ' 'thang mới. Cụ thể, AP dẫn lời quan chức Mỹ thạo tin tiết lộ ' '3 tàu tấn công đổ bộ của quân đội cùng khoảng 2.500 lính ' 'thủy quân lục chiến Mỹ đã được điều động từ cảng ở bang ' 'California đến Trung Đông. Tuần trước, những con tàu đổ bộ ' 'khác của Mỹ đang hoạt động ở châu Á cũng được điều đến Trung ' 'Đông. Ngoài ra, Nhà Trắng cũng vừa thông báo sẽ đề nghị quốc ' 'hội cấp ngân sách 200 tỉ USD cho chiến dịch quân ' 'sự.

Những diễn biến quân sự khiến giới quan sát đặt ra ' 'khả năng Mỹ có thể tiến hành chiến dịch trên bộ. Theo Đài ' 'CBS News hôm qua dẫn các nguồn thạo tin, việc đưa quân Mỹ đổ ' 'bộ Iran là một phương án đang được Lầu Năm Góc nghiên cứu kỹ ' 'lưỡng. Hôm 19.3, ông Trump khẳng định: "Tôi không hề đưa ' 'quân đến nơi nào cả. Nếu có thì tôi cũng sẽ không tiết ' 'lộ".

Mỹ "từ bỏ" Hormuz ?

Cũng trong tuyên bố ' 'hôm qua, Tổng thống Trump nêu rằng eo biển Hormuz sẽ phải ' 'được canh giữ và kiểm soát khi cần, bởi những nước sử dụng ' 'nơi này, trong khi Mỹ thì không sử dụng tuyến eo biển ' 'này.

Dù Mỹ không bị lệ thuộc vào tuyến vận chuyển dầu ' 'mỏ qua Hormuz, việc khôi phục lại hoạt động vận tải được xem ' 'là vấn đề cấp bách để hạ nhiệt cú sốc về giá năng lượng toàn ' 'cầu. Tuy nhiên, các quan chức Mỹ thừa nhận đây là bài toán ' 'khó khăn.

Theo CNN, một quan chức tình báo Mỹ cho rằng ' 'Iran có ưu thế thực chất tại eo biển Hormuz và hiện chưa có ' 'giải pháp rõ ràng để Washington gây sức ép buộc Tehran mở ' 'cửa hoàn toàn eo biển.

Mỹ đã đưa ra những quyết sách ' 'nhằm kiểm soát nguồn cung dầu, từ việc xả kho dự trữ chiến ' 'lược, nới lỏng cấm vận với dầu Nga và mới nhất là dầu Iran. ' 'Song, đây chỉ được xem là giải pháp ngắn hạn và không thể ' 'giải quyết dứt điểm gián đoạn chuỗi cung ứng năng ' 'lượng.

Theo dữ liệu của BBC, kể từ đầu tháng 3, có ' 'chưa đến 100 tàu đi qua eo biển Hormuz. ' 'Lưu lượng hàng hải ở tuyến đường này giảm đến 95% so với ' 'thời điểm trước khi xung đột bùng phát. Các dự báo cho rằng ' 'thế giới sẽ hứng chịu những hậu quả nặng nề từ khủng hoảng ' 'kinh tế sâu rộng, đặc biệt trong trường hợp Mỹ không giải ' 'quyết tình trạng tắc nghẽn ở Hormuz.

Trong cuộc phỏng ' 'vấn với Kyodo News ngày 21.3, Ngoại trưởng Iran Abbas ' 'Araghchi nhắc lại tuyên bố Tehran không đóng cửa eo biển ' 'Hormuz, mà đang hạn chế những tàu thuộc về các nước tham gia ' 'tấn công Iran. Ông tuyên bố Iran sẽ hỗ trợ tàu Nhật Bản đi ' 'qua Hormuz. Ngoại trưởng Iran cũng khẳng định không tìm kiếm ' 'ngừng bắn, mà phải có thỏa thuận chấm dứt cuộc chiến và đảm ' 'bảo nó không tái diễn. Tổng thống Trump cũng bác bỏ triển ' 'vọng ngừng bắn với Iran.

Cơ sở hạt nhân Iran lại bị không kích

Cơ sở ' 'hạt nhân Natanz tại Iran đã bị trúng đòn không kích hôm qua ' '21.3, trong thời điểm chiến sự Trung Đông bước qua tuần thứ ' '4. Theo Al Jazeera, không có báo cáo về sự cố rò rỉ vật liệu ' 'phóng xạ và cư dân khu vực xung quanh nhà máy không gặp nguy ' 'hiểm. Cơ sở Natanz từng bị liên quân Mỹ - Israel tập kích ' 'trong tuần đầu tiên của xung đột. Trước đó, người phát ngôn ' 'quân đội Iran Abolfazl Shekarchi cảnh báo quan chức Mỹ và ' 'Israel sẽ bị nhắm mục tiêu, kể cả khi họ đang ở nước ngoài ' 'nghỉ dưỡng hay du lịch.

\n' ' \n' '\n' '\n' ' \n' '
\n' ' \n' '\n' ' \n' ' \n' ' \n' ' \n' ' \n' '\n' '
\n' '\n' '
', 'md_content': '\n' '\n' '## Kịch bản đổ bộ Iran\n' '\n' 'Tổng thống Trump hôm qua 21.3 tuyên bố Mỹ gần đạt được các mục ' 'tiêu trong chiến dịch tấn công Iran và sẽ cân nhắc thu hẹp ' 'chiến dịch quân sự. Ông Trump nêu ra 5 mục tiêu, với điểm ' 'chính là làm suy yếu năng lực quân sự Iran, ngăn Tehran sở hữu ' 'vũ khí hạt nhân và bảo vệ đồng minh ở [Trung ' 'Đông](https://thanhnien.vn/trung-dong.html "Trung Đông").\n' '\n' '![Toan tính mới của ông Trump cho chiến dịch Trung Đông - Ảnh ' '1.](https://images2.thanhnien.vn/thumb_w/640/528068263637045248/2026/3/21/24a-1774107962332333980118.jpg)Người ' 'dân tại TP.Tehran dự tang lễ người phát ngôn Lực lượng Vệ binh ' 'cách mạng Hồi giáo (IRGC) Ali Mohammad Naeini vào ngày 21.3\n' '\n' 'Ảnh: AP\n' '\n' 'Theo trang *Axios*, thông điệp nêu trên là tín hiệu rõ ràng ' 'nhất cho thấy chính quyền Mỹ chủ động tìm giải pháp chấm dứt ' 'cuộc chiến, so với những tuyên bố mơ hồ trước đây. Dù vậy, AP ' 'cho hay động thái quân sự gần đây của Washington lại đặt ra ' 'những kịch bản leo thang mới. Cụ thể, AP dẫn lời quan chức Mỹ ' 'thạo tin tiết lộ 3 tàu tấn công đổ bộ của quân đội cùng khoảng ' '2.500 lính thủy quân lục chiến Mỹ đã được điều động từ cảng ở ' 'bang California đến Trung Đông. Tuần trước, những con tàu đổ ' 'bộ khác của Mỹ đang hoạt động ở châu Á cũng được điều đến ' 'Trung Đông. Ngoài ra, Nhà Trắng cũng vừa thông báo sẽ đề nghị ' 'quốc hội cấp ngân sách 200 tỉ USD cho chiến dịch quân sự.\n' '\n' 'Những diễn biến quân sự khiến giới quan sát đặt ra khả năng Mỹ ' 'có thể tiến hành chiến dịch trên bộ. Theo Đài CBS News hôm qua ' 'dẫn các nguồn thạo tin, việc đưa quân Mỹ đổ bộ Iran là một ' 'phương án đang được Lầu Năm Góc nghiên cứu kỹ lưỡng. Hôm 19.3, ' 'ông Trump khẳng định: "Tôi không hề đưa quân đến nơi nào cả. ' 'Nếu có thì tôi cũng sẽ không tiết lộ".\n' '\n' '## Mỹ "từ bỏ" Hormuz ?\n' '\n' 'Cũng trong tuyên bố hôm qua, Tổng thống Trump nêu rằng eo biển ' 'Hormuz sẽ phải được canh giữ và kiểm soát khi cần, bởi những ' 'nước sử dụng nơi này, trong khi Mỹ thì không sử dụng tuyến eo ' 'biển này.\n' '\n' 'Dù Mỹ không bị lệ thuộc vào tuyến vận chuyển dầu mỏ qua ' 'Hormuz, việc khôi phục lại hoạt động vận tải được xem là vấn ' 'đề cấp bách để hạ nhiệt cú sốc về giá năng lượng toàn cầu. Tuy ' 'nhiên, các quan chức Mỹ thừa nhận đây là bài toán khó khăn.\n' '\n' 'Theo CNN, một quan chức tình báo Mỹ cho rằng Iran có ưu thế ' 'thực chất tại eo biển Hormuz và hiện chưa có giải pháp rõ ràng ' 'để Washington gây sức ép buộc Tehran mở cửa hoàn toàn eo ' 'biển.\n' '\n' 'Mỹ đã đưa ra những quyết sách nhằm kiểm soát nguồn cung dầu, ' 'từ việc xả kho dự trữ chiến lược, nới lỏng cấm vận với dầu Nga ' 'và mới nhất là dầu Iran. Song, đây chỉ được xem là giải pháp ' 'ngắn hạn và không thể giải quyết dứt điểm gián đoạn chuỗi cung ' 'ứng năng lượng.\n' '\n' 'Theo dữ liệu của BBC, kể từ đầu tháng 3, có chưa đến 100 tàu ' 'đi qua [eo biển ' 'Hormuz](https://thanhnien.vn/tieu-diem-quoc-te-ngay-213-a-10-ra-eo-bien-hormuz-ong-trump-nhac-nho-israel-185260320231304669.htm ' '"eo biển Hormuz"). Lưu lượng hàng hải ở tuyến đường này giảm ' 'đến 95% so với thời điểm trước khi xung đột bùng phát. Các dự ' 'báo cho rằng thế giới sẽ hứng chịu những hậu quả nặng nề từ ' 'khủng hoảng kinh tế sâu rộng, đặc biệt trong trường hợp Mỹ ' 'không giải quyết tình trạng tắc nghẽn ở Hormuz.\n' '\n' 'Trong cuộc phỏng vấn với Kyodo News ngày 21.3, Ngoại trưởng ' 'Iran Abbas Araghchi nhắc lại tuyên bố Tehran không đóng cửa eo ' 'biển Hormuz, mà đang hạn chế những tàu thuộc về các nước tham ' 'gia tấn công Iran. Ông tuyên bố Iran sẽ hỗ trợ tàu Nhật Bản đi ' 'qua Hormuz. Ngoại trưởng Iran cũng khẳng định không tìm kiếm ' 'ngừng bắn, mà phải có thỏa thuận chấm dứt cuộc chiến và đảm ' 'bảo nó không tái diễn. Tổng thống Trump cũng bác bỏ triển vọng ' 'ngừng bắn với Iran. \n' '\n' '## Cơ sở hạt nhân Iran lại bị không kích\n' '\n' 'Cơ sở hạt nhân Natanz tại Iran đã bị trúng đòn không kích hôm ' 'qua 21.3, trong thời điểm chiến sự Trung Đông bước qua tuần ' 'thứ 4. Theo Al Jazeera, không có báo cáo về sự cố rò rỉ vật ' 'liệu phóng xạ và cư dân khu vực xung quanh nhà máy không gặp ' 'nguy hiểm. Cơ sở Natanz từng bị liên quân Mỹ - Israel tập kích ' 'trong tuần đầu tiên của xung đột. Trước đó, người phát ngôn ' 'quân đội Iran Abolfazl Shekarchi cảnh báo quan chức Mỹ và ' 'Israel sẽ bị nhắm mục tiêu, kể cả khi họ đang ở nước ngoài ' 'nghỉ dưỡng hay du lịch.\n' '\n' '\n' '\n' ' //Chèn ads giữa bài\n' ' (runinit = window.runinit || []).push(function () {\n' ' //Nếu k chạy ads thì return\n' " if (typeof \\_chkPrLink != 'undefined' && \\_chkPrLink)\n" ' return;\n' '\n' '\n' ' var mutexAds = \'\';\n' ' var content = $(\'[data-role="content"]\');\n' ' if (content.length > 0) {\n' ' var childNodes = content[0].childNodes;\n' ' for (i = 0; i < childNodes.length; i++) {\n' ' var childNode = childNodes[i];\n' '\n' ' var isPhotoOrVideo = false;\n' " if (childNode.nodeName.toLowerCase() == 'div') {\n" ' // kiem tra xem co la anh khong?\n' " var type = $(childNode).attr('class') + '';\n" '\n' " if (type.indexOf('VCSortableInPreviewMode') >= 0) {\n" ' isPhotoOrVideo = true;\n' ' }\n' ' }\n' '\n' ' try {\n' ' if ((i >= childNodes.length / 2 - 1) && (i < ' 'childNodes.length / 2) && !isPhotoOrVideo) {\n' ' if (i <= childNodes.length - 3) {\n' ' childNode.after(htmlToElement(mutexAds));\n' ' arfAsync.push("l2srqb41");\n' ' }\n' ' break;\n' ' }\n' ' }\n' ' catch (e) { }\n' ' }\n' ' }\n' ' });\n' ' function htmlToElement(html) {\n' " var template = document.createElement('template');\n" ' template.innerHTML = html;\n' ' return template.content.firstChild;\n' ' }\n' '\n' '\n' '\n' ' if (window.pageSettings && pageSettings.allow3rd && (typeof ' "window.\\_isAdsHidden === 'undefined' || " '!window.\\_isAdsHidden)) {\n' ' if (!laNuocNgoai) {\n' ' (function (w, q) {\n' ' w[q] = w[q] || [];\n' ' w[q].push(["\\_mgc.load"]);\n' ' })(window, "\\_mgq");\n' ' }\n' ' }\n' ' \n' '\n' '\n' ' (function() {\n' ' if (!(window.pageSettings && pageSettings.allow3rd && (typeof ' "window.\\_isAdsHidden === 'undefined' || " '!window.\\_isAdsHidden))) return;\n' " if (typeof window.laNuocNgoai === 'undefined' || " '!window.laNuocNgoai) return; // chỉ chạy khi laNuocNgoai true\n' '\n' " var containerSelector = 'div.detail-cmain';\n" ' var root = document.querySelector(containerSelector);\n' ' if (!root) return;\n' '\n' ' // Thu thập figure + p (p không nằm trong figure)\n' " var figures = Array.from(root.querySelectorAll('figure'));\n" ' var paragraphs = ' "Array.from(root.querySelectorAll('p')).filter(function(p){ " "return !p.closest('figure'); });\n" ' var elements = figures.concat(paragraphs); // NodeList vốn đã ' 'theo DOM order => không cần sort\n' ' if (!elements.length) return;\n' '\n' ' var target = elements[Math.floor(elements.length / 2)]; // ' 'giữa bài\n' ' if (!target || !target.parentNode) return;\n' '\n' " var newDiv = document.createElement('div');\n" " newDiv.id = 'taboola-mid-article-widget';\n" ' target.parentNode.insertBefore(newDiv, target.nextSibling);\n' '\n' ' window.\\_taboola = window.\\_taboola || [];\n' ' window.\\_taboola.push({\n' " mode: 'thumbnails-4x1',\n" " container: 'taboola-mid-article-widget',\n" " placement: 'Mid Article Widget',\n" " target\\_type: 'mix'\n" ' });\n' ' })();\n' ' \n' '\n', 'published_date': datetime.date(2026, 3, 22), 'published_timestamp': datetime.datetime(2026, 3, 22, 5, 25), 'source': 'ThanhNien', 'tags': ['Tổng thống Trump', 'Chiến dịch tấn công Iran', 'Mục tiêu quân sự', 'Năng lực quân sự Iran', 'Vũ khí hạt nhân', 'Đồng minh Trung Đông', 'Giải pháp chấm dứt chiến tranh', 'Động thái quân sự Washington', 'Tàu tấn công đổ bộ', 'Lính thủy quân lục chiến', 'Ngân sách quân sự', 'Chiến dịch trên bộ', 'Eo biển Hormuz', 'Vận chuyển dầu mỏ', 'Khủng hoảng năng lượng', 'Tình hình kinh tế', 'Cơ sở hạt nhân Natanz', 'Không kích', 'Quan hệ Mỹ-Iran', 'Hạn chế tàu thuyền', 'Thỏa thuận chấm dứt chiến tranh'], 'title': 'Toan tính mới của ông Trump cho chiến dịch Trung Đông', 'url': 'https://thanhnien.vn/toan-tinh-moi-cua-ong-trump-cho-chien-dich-trung-dong-185260321224805928.htm', 'voice': 'SG-Nam-1-TM'} 2026-03-21 22:32:33 [scrapy.extensions.logstats] INFO: Crawled 20 pages (at 20 pages/min), scraped 2 items (at 2 items/min) 2026-03-21 22:32:33 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-03-21 22:32:33 [thanhnien_timestamp] INFO: 2026-03-22 05:28:00 not in 2026-03-22 05:10:00 to 2026-03-22 05:25:00 2026-03-21 22:32:36 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-03-21 22:32:36 [thanhnien_timestamp] INFO: 2026-03-22 05:30:00 not in 2026-03-22 05:10:00 to 2026-03-22 05:25:00 2026-03-21 22:32:38 [scrapy.extensions.logstats] INFO: Crawled 22 pages (at 2 pages/min), scraped 2 items (at 0 items/min) 2026-03-21 22:32:38 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-03-21 22:32:38 [thanhnien_timestamp] INFO: 2026-03-22 05:30:00 not in 2026-03-22 05:10:00 to 2026-03-22 05:25:00 2026-03-21 22:32:38 [scrapy.core.engine] INFO: Closing spider (finished) 2026-03-21 22:32:38 [boto3.s3.transfer] DEBUG: Opting out of CRT Transfer Manager. Preferred client: auto, CRT available: False, Instance Optimized: False. 2026-03-21 22:32:38 [boto3.s3.transfer] DEBUG: Using default client. pid: 24987, thread: 140247160908600 2026-03-21 22:32:38 [s3transfer.utils] DEBUG: Acquiring 0 2026-03-21 22:32:38 [s3transfer.tasks] DEBUG: UploadSubmissionTask(transfer_id=0, {'transfer_future': }) about to wait for the following futures [] 2026-03-21 22:32:38 [s3transfer.tasks] DEBUG: UploadSubmissionTask(transfer_id=0, {'transfer_future': }) done waiting for dependent futures 2026-03-21 22:32:38 [s3transfer.tasks] DEBUG: Executing task UploadSubmissionTask(transfer_id=0, {'transfer_future': }) with kwargs {'client': , 'config': , 'osutil': , 'request_executor': , 'transfer_future': } 2026-03-21 22:32:38 [s3transfer.futures] DEBUG: Submitting task PutObjectTask(transfer_id=0, {'bucket': 'dagster-output-data', 'key': 'thanhnien_timestamp/thanhnien_timestamp_87b9e8d4257511f1a8c68655d067ffdb_scheduled_2026-03-22.jl', 'extra_args': {}}) to executor for transfer request: 0. 2026-03-21 22:32:38 [s3transfer.utils] DEBUG: Acquiring 0 2026-03-21 22:32:38 [s3transfer.tasks] DEBUG: PutObjectTask(transfer_id=0, {'bucket': 'dagster-output-data', 'key': 'thanhnien_timestamp/thanhnien_timestamp_87b9e8d4257511f1a8c68655d067ffdb_scheduled_2026-03-22.jl', 'extra_args': {}}) about to wait for the following futures [] 2026-03-21 22:32:38 [s3transfer.utils] DEBUG: Releasing acquire 0/None 2026-03-21 22:32:38 [s3transfer.tasks] DEBUG: PutObjectTask(transfer_id=0, {'bucket': 'dagster-output-data', 'key': 'thanhnien_timestamp/thanhnien_timestamp_87b9e8d4257511f1a8c68655d067ffdb_scheduled_2026-03-22.jl', 'extra_args': {}}) done waiting for dependent futures 2026-03-21 22:32:38 [s3transfer.tasks] DEBUG: Executing task PutObjectTask(transfer_id=0, {'bucket': 'dagster-output-data', 'key': 'thanhnien_timestamp/thanhnien_timestamp_87b9e8d4257511f1a8c68655d067ffdb_scheduled_2026-03-22.jl', 'extra_args': {}}) with kwargs {'client': , 'fileobj': , 'bucket': 'dagster-output-data', 'key': 'thanhnien_timestamp/thanhnien_timestamp_87b9e8d4257511f1a8c68655d067ffdb_scheduled_2026-03-22.jl', 'extra_args': {}} 2026-03-21 22:32:38 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler 2026-03-21 22:32:38 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler 2026-03-21 22:32:38 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler 2026-03-21 22:32:38 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler 2026-03-21 22:32:38 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler 2026-03-21 22:32:38 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler > 2026-03-21 22:32:38 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler > 2026-03-21 22:32:38 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler 2026-03-21 22:32:38 [botocore.hooks] DEBUG: Event before-endpoint-resolution.s3: calling handler 2026-03-21 22:32:38 [botocore.hooks] DEBUG: Event before-endpoint-resolution.s3: calling handler > 2026-03-21 22:32:38 [botocore.regions] DEBUG: Calling endpoint provider with parameters: {'Bucket': 'dagster-output-data', 'Region': 'us-east-1', 'UseFIPS': False, 'UseDualStack': False, 'Endpoint': 'https://lake-api.actable.ai/', 'ForcePathStyle': True, 'Accelerate': False, 'UseGlobalEndpoint': True, 'Key': 'thanhnien_timestamp/thanhnien_timestamp_87b9e8d4257511f1a8c68655d067ffdb_scheduled_2026-03-22.jl', 'DisableMultiRegionAccessPoints': False, 'UseArnRegion': True} 2026-03-21 22:32:38 [botocore.regions] DEBUG: Endpoint provider result: https://lake-api.actable.ai/dagster-output-data 2026-03-21 22:32:38 [botocore.regions] DEBUG: Selecting from endpoint provider's list of auth schemes: "sigv4". User selected auth scheme is: "None" 2026-03-21 22:32:38 [botocore.regions] DEBUG: Selected auth type "v4" as "v4" with signing context params: {'region': 'us-east-1', 'signing_name': 's3', 'disableDoubleEncoding': True} 2026-03-21 22:32:38 [botocore.hooks] DEBUG: Event before-call.s3.PutObject: calling handler 2026-03-21 22:32:38 [botocore.hooks] DEBUG: Event before-call.s3.PutObject: calling handler 2026-03-21 22:32:38 [botocore.handlers] DEBUG: Adding expect 100 continue header to request. 2026-03-21 22:32:38 [botocore.hooks] DEBUG: Event before-call.s3.PutObject: calling handler > 2026-03-21 22:32:38 [botocore.hooks] DEBUG: Event before-call.s3.PutObject: calling handler 2026-03-21 22:32:38 [botocore.hooks] DEBUG: Event before-call.s3.PutObject: calling handler 2026-03-21 22:32:38 [botocore.endpoint] DEBUG: Making request for OperationModel(name=PutObject) with params: {'url_path': '/thanhnien_timestamp/thanhnien_timestamp_87b9e8d4257511f1a8c68655d067ffdb_scheduled_2026-03-22.jl', 'query_string': {}, 'method': 'PUT', 'headers': {'User-Agent': 'Boto3/1.34.57 md/Botocore#1.34.162 ua/2.0 os/linux#5.15.0-164-generic md/arch#x86_64 lang/python#3.11.13 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.34.162', 'Content-MD5': 'kzamT2CozmXZ49QcY/5DNg==', 'Expect': '100-continue'}, 'body': , 'auth_path': '/dagster-output-data/thanhnien_timestamp/thanhnien_timestamp_87b9e8d4257511f1a8c68655d067ffdb_scheduled_2026-03-22.jl', 'url': 'https://lake-api.actable.ai/dagster-output-data/thanhnien_timestamp/thanhnien_timestamp_87b9e8d4257511f1a8c68655d067ffdb_scheduled_2026-03-22.jl', 'context': {'client_region': 'us-east-1', 'client_config': , 'has_streaming_input': True, 'auth_type': 'v4', 's3_redirect': {'redirected': False, 'bucket': 'dagster-output-data', 'params': {'Bucket': 'dagster-output-data', 'Key': 'thanhnien_timestamp/thanhnien_timestamp_87b9e8d4257511f1a8c68655d067ffdb_scheduled_2026-03-22.jl', 'Body': }}, 'input_params': {'Bucket': 'dagster-output-data', 'Key': 'thanhnien_timestamp/thanhnien_timestamp_87b9e8d4257511f1a8c68655d067ffdb_scheduled_2026-03-22.jl'}, 'signing': {'region': 'us-east-1', 'signing_name': 's3', 'disableDoubleEncoding': True}, 'endpoint_properties': {'authSchemes': [{'disableDoubleEncoding': True, 'name': 'sigv4', 'signingName': 's3', 'signingRegion': 'us-east-1'}]}}} 2026-03-21 22:32:38 [botocore.hooks] DEBUG: Event request-created.s3.PutObject: calling handler 2026-03-21 22:32:38 [botocore.hooks] DEBUG: Event request-created.s3.PutObject: calling handler > 2026-03-21 22:32:38 [botocore.hooks] DEBUG: Event choose-signer.s3.PutObject: calling handler > 2026-03-21 22:32:38 [botocore.hooks] DEBUG: Event choose-signer.s3.PutObject: calling handler 2026-03-21 22:32:38 [botocore.hooks] DEBUG: Event before-sign.s3.PutObject: calling handler 2026-03-21 22:32:38 [botocore.hooks] DEBUG: Event before-sign.s3.PutObject: calling handler > 2026-03-21 22:32:38 [botocore.auth] DEBUG: Calculating signature using v4 auth. 2026-03-21 22:32:38 [botocore.auth] DEBUG: CanonicalRequest: PUT /dagster-output-data/thanhnien_timestamp/thanhnien_timestamp_87b9e8d4257511f1a8c68655d067ffdb_scheduled_2026-03-22.jl content-md5:kzamT2CozmXZ49QcY/5DNg== host:lake-api.actable.ai x-amz-content-sha256:UNSIGNED-PAYLOAD x-amz-date:20260321T223238Z content-md5;host;x-amz-content-sha256;x-amz-date UNSIGNED-PAYLOAD 2026-03-21 22:32:38 [botocore.auth] DEBUG: StringToSign: AWS4-HMAC-SHA256 20260321T223238Z 20260321/us-east-1/s3/aws4_request d859658b0224c64514bdb91186651df47286cd94fac2b86e843340d485536174 2026-03-21 22:32:38 [botocore.auth] DEBUG: Signature: 3535fd27dfd6694ef84456bfcec97b718883d5133be589fd75a43255284ffe58 2026-03-21 22:32:38 [botocore.hooks] DEBUG: Event request-created.s3.PutObject: calling handler 2026-03-21 22:32:38 [botocore.hooks] DEBUG: Event request-created.s3.PutObject: calling handler 2026-03-21 22:32:38 [botocore.endpoint] DEBUG: Sending http request: 2026-03-21 22:32:38 [botocore.httpsession] DEBUG: Certificate path: /usr/local/lib/python3.11/site-packages/certifi/cacert.pem 2026-03-21 22:32:38 [urllib3.connectionpool] DEBUG: Starting new HTTPS connection (1): lake-api.actable.ai:443 2026-03-21 22:32:38 [botocore.awsrequest] DEBUG: Waiting for 100 Continue response. 2026-03-21 22:32:38 [botocore.awsrequest] DEBUG: 100 Continue response seen, now sending request body. 2026-03-21 22:32:39 [urllib3.connectionpool] DEBUG: https://lake-api.actable.ai:443 "PUT /dagster-output-data/thanhnien_timestamp/thanhnien_timestamp_87b9e8d4257511f1a8c68655d067ffdb_scheduled_2026-03-22.jl HTTP/1.1" 200 0 2026-03-21 22:32:39 [botocore.parsers] DEBUG: Response headers: {'Server': 'nginx/1.18.0 (Ubuntu)', 'Date': 'Sat, 21 Mar 2026 22:32:38 GMT', 'Content-Length': '0', 'Connection': 'keep-alive', 'Accept-Ranges': 'bytes', 'ETag': '"9336a64f60a8ce65d9e3d41c63fe4336"', 'Strict-Transport-Security': 'max-age=31536000; includeSubDomains', 'Vary': 'Origin, Accept-Encoding', 'X-Amz-Bucket-Region': 'us-east-1', 'X-Amz-Id-2': 'dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8', 'X-Amz-Request-Id': '189EFBFB0A201FD9', 'X-Content-Type-Options': 'nosniff', 'X-Ratelimit-Limit': '3162', 'X-Ratelimit-Remaining': '3162', 'X-Xss-Protection': '1; mode=block'} 2026-03-21 22:32:39 [botocore.parsers] DEBUG: Response body: b'' 2026-03-21 22:32:39 [botocore.hooks] DEBUG: Event needs-retry.s3.PutObject: calling handler 2026-03-21 22:32:39 [botocore.retryhandler] DEBUG: No retry needed. 2026-03-21 22:32:39 [botocore.hooks] DEBUG: Event needs-retry.s3.PutObject: calling handler > 2026-03-21 22:32:39 [s3transfer.utils] DEBUG: Releasing acquire 0/None 2026-03-21 22:32:39 [scrapy.extensions.feedexport] INFO: Stored jsonlines feed (2 items) in: s3://dagster-output-data/thanhnien_timestamp/thanhnien_timestamp_87b9e8d4257511f1a8c68655d067ffdb_scheduled_2026-03-22.jl 2026-03-21 22:32:39 [scrapy.statscollectors] INFO: Dumping Scrapy stats: {'downloader/request_bytes': 7407, 'downloader/request_count': 23, 'downloader/request_method_count/GET': 23, 'downloader/response_bytes': 3006246, 'downloader/response_count': 23, 'downloader/response_status_count/200': 23, 'elapsed_time_seconds': 120.703351, 'feedexport/success_count/S3FeedStorage': 1, 'finish_reason': 'finished', 'finish_time': datetime.datetime(2026, 3, 21, 22, 32, 38, 709784, tzinfo=datetime.timezone.utc), 'httpcompression/response_bytes': 15606889, 'httpcompression/response_count': 23, 'item_scraped_count': 2, 'log_count/DEBUG': 179, 'log_count/INFO': 36, 'memusage/max': 162463744, 'memusage/startup': 124444672, 'request_depth_max': 2, 'response_received_count': 23, 'robotstxt/request_count': 1, 'robotstxt/response_count': 1, 'robotstxt/response_status_count/200': 1, 'scheduler/dequeued': 22, 'scheduler/dequeued/memory': 22, 'scheduler/enqueued': 22, 'scheduler/enqueued/memory': 22, 'start_time': datetime.datetime(2026, 3, 21, 22, 30, 38, 6433, tzinfo=datetime.timezone.utc)} 2026-03-21 22:32:39 [scrapy.core.engine] INFO: Spider closed (finished)