Tính hợp pháp của Web Scraping

Với Python, chúng ta có thể quét bất kỳ trang web nào hoặc các phần tử cụ thể của một trang web nhưng bạn có biết nó có hợp pháp hay không? Trước khi cạo bất kỳ trang web nào, chúng ta phải biết về tính hợp pháp của việc cạo trang web. Chương này sẽ giải thích các khái niệm liên quan đến tính hợp pháp của việc quét web.

Giới thiệu

Nói chung, nếu bạn định sử dụng dữ liệu cóp nhặt cho mục đích cá nhân thì có thể không có vấn đề gì. Nhưng nếu bạn định xuất bản lại dữ liệu đó, thì trước khi thực hiện điều tương tự, bạn nên thực hiện yêu cầu tải xuống cho chủ sở hữu hoặc thực hiện một số nghiên cứu cơ bản về các chính sách cũng như về dữ liệu bạn sẽ thu thập.

Yêu cầu nghiên cứu trước khi nạo

Nếu bạn đang nhắm mục tiêu một trang web để lấy dữ liệu từ nó, chúng tôi cần hiểu quy mô và cấu trúc của nó. Sau đây là một số tệp mà chúng tôi cần phân tích trước khi bắt đầu quét web.

Phân tích robots.txt

Trên thực tế, hầu hết các nhà xuất bản đều cho phép các lập trình viên thu thập dữ liệu trang web của họ ở một mức độ nào đó. Theo nghĩa khác, nhà xuất bản muốn thu thập thông tin các phần cụ thể của trang web. Để xác định điều này, các trang web phải đặt một số quy tắc để nêu rõ phần nào có thể được thu thập thông tin và phần nào không thể được. Các quy tắc như vậy được xác định trong một tệp có tên làrobots.txt.

robots.txtlà tệp con người có thể đọc được được sử dụng để xác định các phần của trang web mà trình thu thập thông tin được phép cũng như không được phép cạo. Không có định dạng chuẩn cho tệp robots.txt và nhà xuất bản trang web có thể thực hiện sửa đổi theo nhu cầu của họ. Chúng tôi có thể kiểm tra tệp robots.txt cho một trang web cụ thể bằng cách cung cấp dấu gạch chéo và robots.txt sau url của trang web đó. Ví dụ: nếu chúng ta muốn kiểm tra nó cho Google.com, thì chúng ta cần nhậphttps://www.google.com/robots.txt và chúng ta sẽ nhận được một cái gì đó như sau:

User-agent: *
Disallow: /search
Allow: /search/about
Allow: /search/static
Allow: /search/howsearchworks
Disallow: /sdch
Disallow: /groups
Disallow: /index.html?
Disallow: /?
Allow: /?hl=
Disallow: /?hl=*&
Allow: /?hl=*&gws_rd=ssl$
and so on……..

Một số quy tắc phổ biến nhất được xác định trong tệp robots.txt của trang web như sau:

User-agent: BadCrawler
Disallow: /

Quy tắc trên có nghĩa là tệp robots.txt yêu cầu trình thu thập thông tin BadCrawler tác nhân người dùng không thu thập dữ liệu trang web của họ.

User-agent: *
Crawl-delay: 5
Disallow: /trap

Quy tắc trên có nghĩa là tệp robots.txt trì hoãn trình thu thập thông tin trong 5 giây giữa các yêu cầu tải xuống cho tất cả tác nhân người dùng để tránh máy chủ quá tải. Các/trapliên kết sẽ cố gắng chặn các trình thu thập dữ liệu độc hại đi theo các liên kết không được phép. Có nhiều quy tắc khác có thể được xác định bởi nhà xuất bản của trang web theo yêu cầu của họ. Một số trong số chúng được thảo luận ở đây -

Phân tích tệp Sơ đồ trang web

Bạn phải làm gì nếu muốn thu thập thông tin một trang web để biết thông tin cập nhật? Bạn sẽ thu thập dữ liệu mọi trang web để nhận thông tin cập nhật đó, nhưng điều này sẽ làm tăng lưu lượng truy cập máy chủ của trang web cụ thể đó. Đó là lý do tại sao các trang web cung cấp tệp sơ đồ trang web để giúp trình thu thập thông tin xác định nội dung cập nhật mà không cần phải thu thập dữ liệu mọi trang web. Tiêu chuẩn sơ đồ trang web được xác định tạihttp://www.sitemaps.org/protocol.html.

Nội dung của tệp Sơ đồ trang web

Sau đây là nội dung của tệp sơ đồ trang web của https://www.microsoft.com/robots.txt được phát hiện trong tệp robot.txt -

Sitemap: https://www.microsoft.com/en-us/explore/msft_sitemap_index.xml
Sitemap: https://www.microsoft.com/learning/sitemap.xml
Sitemap: https://www.microsoft.com/en-us/licensing/sitemap.xml
Sitemap: https://www.microsoft.com/en-us/legal/sitemap.xml
Sitemap: https://www.microsoft.com/filedata/sitemaps/RW5xN8
Sitemap: https://www.microsoft.com/store/collections.xml
Sitemap: https://www.microsoft.com/store/productdetailpages.index.xml
Sitemap: https://www.microsoft.com/en-us/store/locations/store-locationssitemap.xml

Nội dung trên cho thấy rằng sơ đồ trang web liệt kê các URL trên trang web và hơn nữa cho phép quản trị viên web chỉ định một số thông tin bổ sung như ngày cập nhật lần cuối, nội dung thay đổi, tầm quan trọng của URL so với các URL khác, v.v. về mỗi URL.

Kích thước của trang web là gì?

Kích thước của một trang web, tức là số lượng các trang của một trang web có ảnh hưởng đến cách chúng ta thu thập dữ liệu không? Chắc chắn có. Bởi vì nếu chúng ta có ít trang web hơn để thu thập thông tin, thì hiệu quả sẽ không phải là vấn đề nghiêm trọng, nhưng giả sử nếu trang web của chúng ta có hàng triệu trang web, ví dụ như Microsoft.com, thì việc tải xuống từng trang một cách tuần tự sẽ mất vài tháng và thì hiệu quả sẽ là một mối quan tâm nghiêm túc.

Kiểm tra kích thước trang web

Bằng cách kiểm tra kích thước kết quả của trình thu thập thông tin của Google, chúng tôi có thể ước tính kích thước của một trang web. Kết quả của chúng tôi có thể được lọc bằng cách sử dụng từ khóasitetrong khi thực hiện tìm kiếm trên Google. Ví dụ: ước tính kích thước củahttps://authoraditiagarwal.com/ được đưa ra dưới đây -

Bạn có thể thấy có khoảng 60 kết quả có nghĩa là nó không phải là một trang web lớn và việc thu thập thông tin sẽ không dẫn đến vấn đề hiệu quả.

Trang web sử dụng công nghệ nào?

Một câu hỏi quan trọng khác là liệu công nghệ mà trang web sử dụng có ảnh hưởng đến cách chúng ta thu thập dữ liệu không? Có, nó ảnh hưởng. Nhưng làm thế nào chúng ta có thể kiểm tra về công nghệ được sử dụng bởi một trang web? Có một thư viện Python có tênbuiltwith với sự trợ giúp của chúng tôi có thể tìm hiểu về công nghệ được sử dụng bởi một trang web.

Thí dụ

Trong ví dụ này, chúng tôi sẽ kiểm tra công nghệ được sử dụng bởi trang web https://authoraditiagarwal.com với sự trợ giúp của thư viện Python builtwith. Nhưng trước khi sử dụng thư viện này, chúng ta cần cài đặt nó như sau:

(base) D:\ProgramData>pip install builtwith
Collecting builtwith
   Downloading
https://files.pythonhosted.org/packages/9b/b8/4a320be83bb3c9c1b3ac3f9469a5d66e0
2918e20d226aa97a3e86bddd130/builtwith-1.3.3.tar.gz
Requirement already satisfied: six in d:\programdata\lib\site-packages (from
builtwith) (1.10.0)
Building wheels for collected packages: builtwith
   Running setup.py bdist_wheel for builtwith ... done
   Stored in directory:
C:\Users\gaurav\AppData\Local\pip\Cache\wheels\2b\00\c2\a96241e7fe520e75093898b
f926764a924873e0304f10b2524
Successfully built builtwith
Installing collected packages: builtwith
Successfully installed builtwith-1.3.3

Giờ đây, với sự trợ giúp của dòng mã đơn giản sau, chúng tôi có thể kiểm tra công nghệ được sử dụng bởi một trang web cụ thể -

In [1]: import builtwith
In [2]: builtwith.parse('http://authoraditiagarwal.com')
Out[2]:
{'blogs': ['PHP', 'WordPress'],
   'cms': ['WordPress'],
   'ecommerce': ['WooCommerce'],
   'font-scripts': ['Font Awesome'],
   'javascript-frameworks': ['jQuery'],
   'programming-languages': ['PHP'],
   'web-servers': ['Apache']}

Chủ sở hữu của trang web là ai?

Chủ sở hữu của trang web cũng rất quan trọng vì nếu chủ sở hữu được biết đến với việc chặn các trình thu thập thông tin, thì các trình thu thập thông tin phải cẩn thận trong khi thu thập dữ liệu từ trang web. Có một giao thức có tênWhois với sự trợ giúp của chúng tôi có thể tìm hiểu về chủ sở hữu của trang web.

Thí dụ

Trong ví dụ này, chúng tôi sẽ kiểm tra chủ sở hữu của trang web nói rằng microsoft.com với sự trợ giúp của Whois. Nhưng trước khi sử dụng thư viện này, chúng ta cần cài đặt nó như sau:

(base) D:\ProgramData>pip install python-whois
Collecting python-whois
   Downloading
https://files.pythonhosted.org/packages/63/8a/8ed58b8b28b6200ce1cdfe4e4f3bbc8b8
5a79eef2aa615ec2fef511b3d68/python-whois-0.7.0.tar.gz (82kB)
   100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 92kB 164kB/s
Requirement already satisfied: future in d:\programdata\lib\site-packages (from
python-whois) (0.16.0)
Building wheels for collected packages: python-whois
   Running setup.py bdist_wheel for python-whois ... done
   Stored in directory:
C:\Users\gaurav\AppData\Local\pip\Cache\wheels\06\cb\7d\33704632b0e1bb64460dc2b
4dcc81ab212a3d5e52ab32dc531
Successfully built python-whois
Installing collected packages: python-whois
Successfully installed python-whois-0.7.0

Giờ đây, với sự trợ giúp của dòng mã đơn giản sau, chúng tôi có thể kiểm tra công nghệ được sử dụng bởi một trang web cụ thể -

In [1]: import whois
In [2]: print (whois.whois('microsoft.com'))
{
   "domain_name": [
      "MICROSOFT.COM",
      "microsoft.com"
   ],
   -------
   "name_servers": [
      "NS1.MSFT.NET",
      "NS2.MSFT.NET",
      "NS3.MSFT.NET",
      "NS4.MSFT.NET",
      "ns3.msft.net",
      "ns1.msft.net",
      "ns4.msft.net",
      "ns2.msft.net"
   ],
   "emails": [
      "[email protected]",
      "[email protected]",
      "[email protected]",
      "[email protected]"
   ],
}