Thống kê dữ liệu trên xam

Tụi m dữ đoán cái nào sẽ thắng?

  • cái lồn

    Votes: 13 61.9%
  • con cặc

    Votes: 1 4.8%
  • manhthuong

    Votes: 7 33.3%

  • Total voters
    21
Trong trường hợp nhóm này bị điều tra bởi các cơ quan trực thuộc bộ công an (hoặc các tổ chức chính trị tương tự phục vụ cho nhà nước CHXHCNVN), tôi khẳng định mình không liên quan tới nhóm hoặc những cá nhân khác trong nhóm này. Tôi không rõ tại sao mình lại có mặt ở đây vào thời điểm này, có lẽ tài khoản của tôi đã được thêm bởi một bên thứ ba. Tôi cũng xin khẳng định rằng mình không hề giúp sức cho những hành động chống phá Đảng và nhà nước của các thành viên trong nhóm này.
 
Step 1:
Để crawl hết dữ liệu trên xamvn thì đầu tiên t cần có danh sách tất cả bài đăng trên diễn đàn.
Đầu tiên, nhìn qua url một bài đăng ví dụ chính bài này: https://xamvn.chat/r/thong-ke-du-lieu-tren-xam.1320600
Thì nó sẽ có dạng: https://xamvn.chat/r/[tiêu đề bài đăng].[id của bài]
T thử vào link https://xamvn.chat/r/1320600/ thì truy cập bình thường => t chỉ cần thử tất cả từ id từ 1 đến số mới nhất là có thể có danh sách tất cả bài đăng.
Tuy nhiên khi t thử một số id thì không tìm thấy bài mà chỉ nhìn thấy con cặc của Manhthuong:
The requested page could not be found.

...............…………………………._¸„„„„_
…………………….…………...„--~*'¯…….'\
………….…………………… („-~~--„¸_….,/ì'Ì
…….…………………….¸„-^"¯ : : : : :¸-¯"¯/'
……………………¸„„-^"¯ : : : : : : : '\¸„„,-"
**¯¯¯'^^~-„„„----~^*'"¯ : : : : : : : : : :¸-"
.:.:.:.:.„-^" : : : : : : : : : : : : : : : : :„-"
:.:.:.:.:.:.:.:.:.:.: : : : : : : : : : ¸„-^¯
.::.:.:.:.:.:.:.:. : : : : : : : ¸„„-^¯
:.' : : '\ : : : : : : : ;¸„„-~"
:.:.:: :"-„""***/*'ì¸'¯
:.': : : : :"-„ : : :"\
.:.:.: : : : :" : : : : \,
:.: : : : : : : : : : : : 'Ì
: : : : : : :, : : : : : :/
"-„_::::_„-*__„„~"
Vậy nên t có một hướng tiếp cận khác là check thử sitemap: https://xamvn.chat/sitemap.xml:
XML:
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://xamvn.chat/sitemap-1.xml</loc>
<lastmod>2025-04-04T05:38:29+00:00</lastmod>
</sitemap>
<sitemap>
<loc>https://xamvn.chat/sitemap-2.xml</loc>
<lastmod>2025-04-04T05:38:29+00:00</lastmod>
</sitemap>
<sitemap>
<loc>https://xamvn.chat/sitemap-3.xml</loc>
<lastmod>2025-04-04T05:38:29+00:00</lastmod>
</sitemap>
<sitemap>
<loc>https://xamvn.chat/sitemap-4.xml</loc>
<lastmod>2025-04-04T05:38:29+00:00</lastmod>
</sitemap>
<sitemap>
<loc>https://xamvn.chat/sitemap-5.xml</loc>
<lastmod>2025-04-04T05:38:29+00:00</lastmod>
</sitemap>
<sitemap>
<loc>https://xamvn.chat/sitemap-6.xml</loc>
<lastmod>2025-04-04T05:38:29+00:00</lastmod>
</sitemap>
<sitemap>
<loc>https://xamvn.chat/sitemap-7.xml</loc>
<lastmod>2025-04-04T05:38:29+00:00</lastmod>
</sitemap>
</sitemapindex>

BINGO, trong mấy link ở bên trên là toàn bộ danh sách tất cả bài đăng từ cổ chí kiêm trên xamvn. Việc có được danh sách này sẽ giúp t tiết kiệm thời gian check tất cả id:

XML:
<url><loc>https://xamvn.chat/r/tam-tu-tuoi-moi-lon.47/</loc><lastmod>2019-07-03T14:16:59+00:00</lastmod></url>
    <url><loc>https://xamvn.chat/r/vai-lmht-con-mi-van-chuyen-ve-gan-chung-cu-tao-song.87/</loc><lastmod>2024-07-10T09:03:09+00:00</lastmod></url>
    <url><loc>https://xamvn.chat/r/chem-lan-dau-chung-may-thit-gai-no-noi-gi.90/</loc><lastmod>2019-05-08T16:43:44+00:00</lastmod></url>
    <url><loc>https://xamvn.chat/r/thang-nao-c-c-to-vao-diem-danh.102/</loc><lastmod>2023-12-23T10:08:20+00:00</lastmod></url>
    <url><loc>https://xamvn.chat/r/khan-cau-su-giup-suc-phi-vu-dau-tien-cua-vozvn.113/</loc><lastmod>2019-09-21T01:47:45+00:00</lastmod></url>
    <url><loc>https://xamvn.chat/r/tai-va-tat-cua-1-so-mem-xaml-cu.166/</loc><lastmod>2022-12-12T12:08:14+00:00</lastmod></url>
    <url><loc>https://xamvn.chat/r/eu-may-thang-guest.204/</loc><lastmod>2016-06-10T19:42:59+00:00</lastmod></url>
    <url><loc>https://xamvn.chat/r/chung-may-biet-phi-doi-nay-ko.216/</loc><lastmod>2018-10-11T12:04:38+00:00</lastmod></url>
    <url><loc>https://xamvn.chat/r/ki-su-chuyen-mo.225/</loc><lastmod>2023-05-23T09:28:54+00:00</lastmod></url>
    <url><loc>https://xamvn.chat/r/nhan-xem-tuong-cho-gai-xinh-o-day-nhe.247/</loc><lastmod>2019-10-06T16:55:26+00:00</lastmod></url>
    <url><loc>https://xamvn.chat/r/pho-nguyen-cai-4rum-lon-ma-vang-nhu-di-toi-ngay.297/</loc><lastmod>2019-05-14T15:08:52+00:00</lastmod></url>
    <url><loc>https://xamvn.chat/r/chuyen-rau-co-co-it-anh.333/</loc><lastmod>2019-01-14T03:38:50+00:00</lastmod></url>
    <url><loc>https://xamvn.chat/r/tam-su-cua-pin.344/</loc><lastmod>2022-10-30T17:14:22+00:00</lastmod></url>

Từ dữ liệu này thôi t đã có thể có một số góc nhìn về hoạt động trên diễn đàn, chưa cần đến comment bên trong...
 
Step 2:
Tiến hành crawl dữ liệu từ danh sách ở step 1.
T chọn scrapy để crawl vì vừa dễ xài + có tích hợp đa luồng -> crawl nhiều page cùng lúc.
Chạy code:
Python:
import scrapy
from scrapy.spiders import SitemapSpider
import logging

logging.basicConfig(level=logging.INFO)

class XamvnChatSpider(SitemapSpider):
    name = 'xamvn_chat'
    allowed_domains = ['xamvn.chat']
    sitemap_urls = ['https://xamvn.chat/sitemap.xml']
    custom_settings = {
        'COOKIES_ENABLED': False,
        'LOG_LEVEL': 'INFO',
    }

    sitemap_rules = [
        ('/r/', 'parse_thread'),
    ]

    def parse_thread(self, response, thread_url=None, title=None, accumulated_messages=None):
        if thread_url is None:
            thread_url = response.url
        if accumulated_messages is None:
            accumulated_messages = []
        current_title = title
        if current_title is None:
            current_title_extracted = response.css('h1::text').get()
            if current_title_extracted:
                current_title = current_title_extracted.strip()
            else:
                current_title = "Untitled Thread" # Provide a default
                self.logger.warning(f"Could not extract title for thread starting at {thread_url}")
        current_page_messages = []
        articles = response.css('.block-container .message--post') # Sticking with CSS for clarity here
        for article in articles:
            user_id = article.css('a.username::attr(data-user-id)').get()
            timestamp = article.css('time::attr(datetime)').get()
            content = article.css('.bbWrapper').get()
            order = None
            post_order_texts = article.css('.message-attribution-opposite a::text').getall()
            for text in reversed(post_order_texts):
                cleaned_text = text.strip()
                if cleaned_text.startswith('#') and cleaned_text[1:].isdigit():
                    order = cleaned_text
                    break
            if user_id and content:
                 current_page_messages.append({
                     'data_user_id': user_id,
                     'timestamp': timestamp,
                     'content': content,
                     'order': order
                 })
            else:
                 self.logger.warning(f"Skipping message on {response.url} (User: {user_id}) due to missing data.")
        accumulated_messages.extend(current_page_messages)
        next_page_selector = 'a.pageNav-jump.pageNav-jump--next::attr(href)'
        next_page_relative_url = response.css(next_page_selector).get()
        if next_page_relative_url:
            next_page_url = response.urljoin(next_page_relative_url.strip())
            yield scrapy.Request(
                url=next_page_url,
                callback=self.parse_thread,
                cb_kwargs={
                    'thread_url': thread_url,
                    'title': current_title,
                    'accumulated_messages': accumulated_messages
                },
            )
        else:
            yield {
                'url': thread_url,
                'title': current_title,
                'messages': accumulated_messages,
                'message_count': len(accumulated_messages)
            }
Với cái máy và mạng sida của t thì chỉ có thể đáp ứng được ~500 bài đăng/phút => để crawl tất cả bài ~1320600 thì cần 1320600/500=2641 phút = 44 tiếng liên tục. Hẹn tụi m 44 tiếng sau.
 
T đưa vô con server lỏ của t thì nó chạy nhanh được chút nhưng mà éo crawl được các bài hall of fame vì cần đăng nhập. T đang xem xét thằng crawlee. Thằng này có vẻ xịn hơn Scrapy t đang dùng
 
t đang crawl bằng selenium vs api 2 thằng m nói có hơn gì k m
Scrapy của t là tải html về rồi bóc tách thôi m, nên tốc độ có thể nhanh nhưng bị giới hạn, còn selenium của m dc cái lấy dc dữ liệu như m đang dùng web bthg, t đang xem xét cái crawlee để xài headless browser đây
 
Scrapy của t là tải html về rồi bóc tách thôi m, nên tốc độ có thể nhanh nhưng bị giới hạn, còn selenium của m dc cái lấy dc dữ liệu như m đang dùng web bthg, t đang xem xét cái crawlee để xài headless browser đây
Test thử vài trang xem, khoan hãy crawl hết tốn time
 
Scrapy của t là tải html về rồi bóc tách thôi m, nên tốc độ có thể nhanh nhưng bị giới hạn, còn selenium của m dc cái lấy dc dữ liệu như m đang dùng web bthg, t đang xem xét cái crawlee để xài headless browser đây
sele cũng dùng headless đc m

Test thử vài trang xem, khoan hãy crawl hết tốn time
crawls cái xam này tầm 2 tiếng là xong
code hơi tốn time thôi
 
sele cũng dùng headless đc m


crawls cái xam này tầm 2 tiếng là xong
code hơi tốn time thôi
Selenium theo t biết thì nó là browser driver cho m điều khiển thôi. Còn để tự động crawl nhiều page cùng một lúc rồi quản lý storage, resume này kia thì crawlee nó tích hợp lên luôn. Thằng crawlee nó cũng build on top selenium đó m, t đang thử chạy xem thằng nào nhanh hơn. 2 tiếng chắc k xong dc đâu, chạy vội quá sập mẹ server tml Manhthuong ban t quá =))
 
Selenium theo t biết thì nó là browser driver cho m điều khiển thôi. Còn để tự động crawl nhiều page cùng một lúc rồi quản lý storage, resume này kia thì crawlee nó tích hợp lên luôn. Thằng crawlee nó cũng build on top selenium đó m, t đang thử chạy xem thằng nào nhanh hơn. 2 tiếng chắc k xong dc đâu, chạy vội quá sập mẹ server tml manhthuong ban t quá =))
mấy cái m nói t tự code thư viện sele đc hết r
cái kia có luôn thì ngon quá
xam có bao nhiêu page đâu
sele 1h crawls đc vài ngàn page cũng đc
 
mấy cái m nói t tự code thư viện sele đc hết r
cái kia có luôn thì ngon quá
xam có bao nhiêu page đâu
sele 1h crawls đc vài ngàn page cũng đc
t chạy scrapy crawl được 100k page trong 1.5 tiếng -> 3gb dung lượng r m
t ước tính trên xàm cỡ 1 triệu page thì dung lượng cần ~ 30gb.
mấy tml trên này sủa bậy là nhiều tốn tài nguyên vc
 
t chạy scrapy crawl được 100k page trong 1.5 tiếng -> 3gb dung lượng r m
t ước tính trên xàm cỡ 1 triệu page thì dung lượng cần ~ 30gb.
mấy tml trên này sủa bậy là nhiều tốn tài nguyên vc
vl cái xam mà cả triệu page vậy :))
scrapy nó cũng same same sele à
@Thích_Yến_Trân tiến sĩ nghĩ sao
 

Có thể bạn quan tâm

Top