Chỉnh sửa ảnh crawl thành của mình

Trong quá trình làm quen với việc crawl dữ liệu của người khác, từ thực tiễn liên quan mình có một bài toán cần đặt ra với dữ liệu về ảnh.

Có mối liên quan đến ảnh có thể xử lý khi crawl như sau:

  • Crawl đường dẫn ảnh mà thôi, nghĩa là lấy một website lưu về trang của mình nhưng không lấy ảnh đó về. Người dùng khi xem ảnh trên trang clone của mình nhưng bản chất ảnh vẫn ở trang kia. Chẳng may ảnh nó die thì mình không hiển thị được. Tất cả băng thông hoặc mấy thứ khác nó sẽ chịu hết.
  • Crawl cả ảnh về server của mình, coi như đứt đoạn luôn. Thành của mình hết, nó có die thì mình chẳng ảnh hưởng gì.

Khi lấy cả ảnh lưu về server của mình nhưng ảnh đó đã được công cụ tìm kiếm (GOOGLE) đánh index. Liên quan đến bản quyền, xếp rank, chính sách… ta cần phải chỉnh sửa đi. Ta cần làm các thao tác sau:

  • Đổi tên ảnh: Cái này là cái nên làm đầu tiên
  • Đánh dấu nó là của trang mình (ăn cắp còn đánh dấu là của mình) bằng cách hiển thị text lên ảnh. Có thể là nội dung mình thích hoặc viết tên miền của mình lên.
  • Làm một số việc khác như: Chèn logo, lồng khung, thêm icon…
  • Tất nhiên xóa đánh dấu của nó đi nếu được nữa
  • Điều chỉnh lại kích thước của ảnh

Crawl đã tự động thì việc này ta cũng cần làm tự động luôn. Ý tưởng ban đầu nghĩ đến đó là sử dụng thư viện về chỉnh sửa ảnh như Opencv nổi tiếng. Code thì có thể dùng tự do nhưng đầu tiên cứ thử thằng Python cho đơn giản (có thể không đơn giản).

Clone trang web sau vài nốt nhạc

Vừa mới thử nghiệm với Python để crawl data có thể clone một trang web sau một nốt nhạc.

Mình sử dụng Anaconda để code Python, kết nối cơ sở dữ liệu MariaDB.

Các thành phần chính và công việc cần làm như sau:

Môi trường:

  • Ngôn ngữ lập trình Python
  • IDE sử dụng Anaconda
  • Database: MariaDB (tương tự MySQL) – để thử nghiệm cái mới vì nghe đồn MySQL dần dần mất tính nguồn mở
  • Một số thư viện chính: Kết nối giữa python và mysql, beautifulsoup để crawl.

Phương thức làm:

  • Khởi đầu là trang web của website hoặc blog là một link trong CSDL
  • Từ CSDL có link ta lấy toàn bộ link có cùng tên miền trong trang đó và lưu lại vào bảng
  • Lặp lại công việc trên với bảng trong CSDL. Việc lặp này tiệm cận đến việc lấy được toàn bộ trang web của nó (có thể không hết)
  • Từ danh sách các link này (loại bỏ trùng lặp) lần lượt lấy content của trang web và lưu lại vào CSDL của mình.

Tất nhiên nói đơn giản thì đơn giản nhưng sẽ vẫn có một số vấn đề cần phải giải quyết như tốc độ, các truy vấn mà trang đó cho phép…

Mình cũng đã thực hiện được một số thao tác cơ bản nhưng khá quan trọng và nói việc này trong tầm tay.

Backup blog theo cách điên rồ

Hôm vừa mình bước đầu viết được tool có thể crawl dữ liệu của một trang web, blog bất kỳ. Nay chợt nghĩ ra mình có thể dùng nó để backup một blog hay trang web nào đó của mình hay của người khác không?

Có thể chứ, dựa vào tên miền, tiến hành lấy toàn bộ link của tên miền, sau đó bóc tách toàn bộ nội dung và lưu lại. Cái này gọi là điên rồ vì các điểm:

  • Mất thời gian. Phải viết tools, script… để thực hiện toàn bộ các thao tác. Trong khi chỉ việc backup database và code đơn giản từ server về(đó là của mình). Còn của người khác thì đúng là chỉ có cách này.
  • Tốn băng thông và gây lỗi cho blog. Với cách này thì truy vấn đến trang rất nhiều như kiểu tấn công từ chối dịch vụ vậy. Hiện blog mình dùng cloudflare free, truy vấn nhiều nó báo lỗi 502 luôn

Đó chỉ là ý tưởng thôi nhưng cần kỹ thuật vài thứ, phải làm job các kiểu… Nhưng cứ coi đó là 1 slide project (pet project) cũng hay đó.

Danh sách link hay

Vẫn giữ ý tưởng rất rất lâu rồi mong muốn làm mà vẫn chưa thành công, vì chưa quyết tâm…

Đây sẽ là nơi lưu trữ danh sách các link mà mình cảm thấy hay muốn lưu lại để dùng lại, đọc lại về sau. Thôi bỏ qua những thứ lằng nhằng vẽ vời khác. Đơn giản chỉ lưu lại url, tittle và sau đó hiển thị random ra mà thôi.

Có lẽ đơn giản thì nên làm thủ công với wordpresss là lưu thành bài viết vậy… Vẫn thuộc dạng bỏ ngỏ.

MySQL 1045 – Access denied for user

Mấy hôm nay cần cài wordpress ở máy tính cá nhân của mình để triển tool crawl dữ liệu. Các hạng mục crawl dữ liệu khá ok rồi, bây giờ mình muốn dựng wordpress để hiển thị thành quả. Mục tiêu là clone một trang web trong vòng 1 nốt nhạc và còn phương án cập nhật dữ liệu hàng ngày nữa.

Ở công ty cài anh bạn Wampserver cũng khá là suôn sẻ, tất nhiên phải đổi một số port mặc định cho apache, mysql… vì đã bị trùng cổng các phần mềm khác. Nhưng tới máy nhà mình thì cài Wampserver thì bị thiếu file dll gì đó, đành chuyển sang anh bạn Xampp mình biết từ lâu rồi.

Nhưng cũng chưa yên, cài xong thì bị trùng cổng của anh bạn Skype, đành phải gỡ Skype. Thế nhưng vẫn dính lỗi 1045 – Access denied for user, đổi sang cổng khác cổng 3306 thì MySQL đã chạy nhưng phpMyadmin lại lỗi vì không kết nối được. Mặc dù thử vài cách trên mạng nhưng vẫn không ăn thua. Mãi mới tìm thấy một cách xử lý mà mình đã nghi ngờ đó là sửa port trong file config của phpMyadmin.

Địa chỉ file config: C:\xampp\phpMyAdmin\config.inc.php

Thêm port cho nó: :3309

/* Bind to the localhost ipv4 address and tcp */
$cfg[‘Servers’][$i][‘host’] = ‘127.0.0.1:3309’;

Thế là xong, mặc định pass root của MySQL vẫn trống.