Prohoster > Blog > tin tức mạng > Habrastatistics: khám phá các phần được truy cập nhiều nhất và ít nhất của trang web
Habrastatistics: khám phá các phần được truy cập nhiều nhất và ít nhất của trang web
Xin chào, Habr.
В phần trước Lưu lượng truy cập của Habr được phân tích theo các thông số chính - số lượng bài viết, lượt xem và xếp hạng của chúng. Tuy nhiên, vấn đề về mức độ phổ biến của các phần trang web vẫn chưa được xem xét. Thật thú vị khi xem xét vấn đề này chi tiết hơn và tìm ra những trung tâm phổ biến nhất và không được ưa chuộng nhất. Cuối cùng, tôi sẽ xem xét hiệu ứng geektimes chi tiết hơn, kết thúc bằng việc lựa chọn mới các bài viết hay nhất dựa trên thứ hạng mới.
Đối với những ai quan tâm đến những gì đã xảy ra, phần tiếp theo đang bị cắt bỏ.
Hãy để tôi nhắc bạn một lần nữa rằng số liệu thống kê và xếp hạng không phải là chính thức, tôi không có bất kỳ thông tin nội bộ nào. Cũng không đảm bảo rằng tôi không mắc lỗi ở đâu đó hoặc bỏ sót điều gì đó. Nhưng tôi vẫn nghĩ nó trở nên thú vị. Chúng ta sẽ bắt đầu với đoạn mã trước; những ai không quan tâm đến điều này có thể bỏ qua phần đầu tiên.
Thu thập dữ liệu
Trong phiên bản đầu tiên của trình phân tích cú pháp, chỉ tính đến số lượt xem, nhận xét và xếp hạng bài viết. Điều này đã tốt rồi, nhưng nó không cho phép bạn thực hiện các truy vấn phức tạp hơn. Đã đến lúc phân tích các phần theo chủ đề của trang web; điều này sẽ cho phép bạn thực hiện những nghiên cứu khá thú vị, chẳng hạn như xem mức độ phổ biến của phần “C++” đã thay đổi như thế nào trong vài năm qua.
Trình phân tích cú pháp bài viết đã được cải tiến, giờ đây nó trả về các trung tâm mà bài viết thuộc về, cũng như biệt hiệu của tác giả và xếp hạng của anh ấy (rất nhiều điều thú vị cũng có thể được thực hiện ở đây, nhưng điều đó sẽ đến sau). Dữ liệu được lưu trong tệp csv trông giống như thế này:
2018-12-18T12:43Z,https://habr.com/ru/post/433550/,"Мессенджер Slack — причины выбора, косяки при внедрении и особенности сервиса, облегчающие жизнь",votes:7,votesplus:8,votesmin:1,bookmarks:32,
views:8300,comments:10,user:ReDisque,karma:5,subscribers:2,hubs:productpm+soft
...
Chúng tôi sẽ nhận được danh sách các trung tâm chủ đề chính của trang web.
def get_as_str(link: str) -> Str:
try:
r = requests.get(link)
return Str(r.text)
except Exception as e:
return Str("")
def get_hubs():
hubs = []
for p in range(1, 12):
page_html = get_as_str("https://habr.com/ru/hubs/page%d/" % p)
# page_html = get_as_str("https://habr.com/ru/hubs/geektimes/page%d/" % p) # Geektimes
# page_html = get_as_str("https://habr.com/ru/hubs/develop/page%d/" % p) # Develop
# page_html = get_as_str("https://habr.com/ru/hubs/admin/page%d" % p) # Admin
for hub in page_html.split("media-obj media-obj_hub"):
info = Str(hub).find_between('"https://habr.com/ru/hub', 'list-snippet__tags')
if "*</span>" in info:
hub_name = info.find_between('/', '/"')
if len(hub_name) > 0 and len(hub_name) < 32:
hubs.append(hub_name)
print(hubs)
Hàm find_between và lớp Str chọn một chuỗi giữa hai thẻ, tôi đã sử dụng chúng sớm hơn. Các trung tâm chuyên đề được đánh dấu bằng dấu "*" để có thể dễ dàng đánh dấu chúng và bạn cũng có thể bỏ ghi chú các dòng tương ứng để nhận các phần thuộc các danh mục khác.
Đầu ra của hàm get_hubs là một danh sách khá ấn tượng mà chúng tôi lưu dưới dạng từ điển. Tôi đặc biệt trình bày toàn bộ danh sách để bạn có thể ước tính khối lượng của nó.
Các trung tâm còn lại được bảo quản theo cách tương tự. Giờ đây thật dễ dàng để viết một hàm trả về kết quả cho dù bài viết thuộc về geektimes hay một trung tâm hồ sơ.
Chúng tôi hiển thị số lượng bài viết đã xuất bản bằng Matplotlib:
Tôi đã chia các bài viết “geektimes” và “geektimes only” trong biểu đồ, bởi vì Một bài viết có thể thuộc cả hai phần cùng một lúc (ví dụ: “DIY” + “microcontrollers” + “C++”). Tôi đã sử dụng từ “hồ sơ” để làm nổi bật các bài viết về hồ sơ trên trang web, mặc dù có lẽ thuật ngữ tiếng Anh cho từ này không hoàn toàn chính xác.
Trong phần trước, chúng tôi đã hỏi về “hiệu ứng geektimes” liên quan đến sự thay đổi trong quy tắc thanh toán cho các bài báo dành cho geektimes bắt đầu từ mùa hè này. Hãy hiển thị riêng các bài viết của geektimes:
Kết quả thật thú vị. Tỷ lệ gần đúng giữa số lượt xem của các bài báo trên geektime trên tổng số lượt xem là khoảng 1:5. Nhưng trong khi tổng số lượt xem dao động đáng kể thì lượt xem các bài báo “giải trí” vẫn ở mức tương đương.
Bạn cũng có thể nhận thấy rằng tổng số lượt xem các bài viết trong phần “geektimes” vẫn giảm sau khi thay đổi quy tắc, nhưng “bằng mắt” không quá 5% tổng giá trị.
Thật thú vị khi nhìn vào số lượt xem trung bình trên mỗi bài viết:
Đối với các bài viết “giải trí”, con số này cao hơn mức trung bình khoảng 40%. Điều này có lẽ không có gì đáng ngạc nhiên. Thất bại vào đầu tháng XNUMX đối với tôi là không rõ ràng, có thể đó là điều đã xảy ra, hoặc đó là một loại lỗi phân tích cú pháp nào đó, hoặc có thể một trong những tác giả của geektimes đã đi nghỉ;).
Nhân tiện, biểu đồ cho thấy hai đỉnh điểm đáng chú ý hơn về số lượt xem các bài báo - dịp nghỉ Tết và tháng Năm.
Trung tâm
Hãy chuyển sang phần phân tích đã hứa về các trung tâm. Hãy liệt kê 20 trung tâm hàng đầu theo số lượt xem:
Điều đáng ngạc nhiên là trung tâm được yêu thích nhất xét về lượt xem lại là “An toàn thông tin”; top 5 dẫn đầu còn có “Lập trình” và “Khoa học phổ thông”.
Antitop chiếm Gtk và Cocoa.
Tôi sẽ nói cho bạn một bí mật, những trung tâm hàng đầu cũng có thể được nhìn thấy đây, mặc dù số lượt xem không được hiển thị ở đó.
Đánh giá
Và cuối cùng là đánh giá đã hứa. Bằng cách sử dụng dữ liệu phân tích trung tâm, chúng tôi có thể hiển thị các bài viết phổ biến nhất về các trung tâm phổ biến nhất trong năm 2019.
Và cuối cùng, để không ai bị xúc phạm, tôi sẽ đưa ra đánh giá về trung tâm ít được truy cập nhất “gtk”. Trong vòng một năm nó đã được xuất bản một Bài báo cũng “tự động” chiếm dòng đầu tiên của bảng xếp hạng.