Chà, khi bạn gửi yêu cầu đến máy chủ, bạn không chỉ nói. 'Này, cho tôi thông tin đó, làm ơn'. Bạn cũng đang cung cấp thông tin về chính yêu cầu – thông tin, chẳng hạn như mã hóa và ngôn ngữ của phản hồi dự kiến, độ dài và loại dữ liệu được cung cấp, người thực hiện yêu cầu, v.v. Những mẩu thông tin này, được gọi là tiêu đề, nhằm giúp cho việc liên lạc trên web trở nên dễ dàng và đáng tin cậy hơn vì máy chủ có ý tưởng tốt hơn về cách phản hồi
Được chứ. Nhưng câu hỏi vẫn còn - các tiêu đề này được chỉ định như thế nào?
Chà, mọi loại thông tin tiêu đề đều được chứa trong trường tiêu đề được tiêu chuẩn hóa. Hai trong số các trường tiêu đề phổ biến nhất là 'Tác nhân người dùng' và 'cookie'. Chúng ta hãy xem xét sâu hơn về những
Tiêu đề yêu cầu. Chuỗi tác nhân người dùng là gì?
Khi một phần mềm gửi yêu cầu, nó thường xác định chính nó, loại ứng dụng, hệ điều hành, nhà cung cấp phần mềm hoặc phiên bản phần mềm bằng cách gửi một chuỗi nhận dạng đặc trưng. Chuỗi này được gọi là “chuỗi tác nhân người dùng”. Bạn có thể coi nó như một thẻ ID chứa một số thông tin cơ bản
Tất cả các trình duyệt, cũng như một số trình thu thập thông tin và bot phổ biến, chẳng hạn như 'google bot', đều có một 'chuỗi tác nhân người dùng' duy nhất mà chúng tự xác định bằng
Vì vậy, làm thế nào điều này liên quan đến chúng tôi, những người dọn dẹp?
Chà, rất nhiều công ty thiết lập máy chủ của họ theo cách cho phép họ xác định trình duyệt mà khách hàng đang sử dụng. Trên thực tế, hầu hết các trang web có thể trông hơi khác một chút trong Chrome, Firefox, Safari, v.v. Dựa trên trình duyệt, một phiên bản cụ thể của trang web được gửi tới máy khách để có hiệu suất tính toán và hình ảnh tối ưu. Tuy nhiên, điều này có thể trở thành một vấn đề đối với chúng tôi nếu chúng tôi không cung cấp 'chuỗi tác nhân người dùng' thích hợp
Có hai điều có thể xảy ra trong trường hợp đóTrước hết, máy chủ có thể được thiết lập để gửi một biến thể mặc định của trang nếu nó không nhận ra tác nhân người dùngTrong tình huống này, HTML chúng tôi đang xem trong trình duyệt của mình có thể khác với những gì chúng tôi nhận được dưới dạng phản hồi. Tuy nhiên, giải pháp trong trường hợp này khá đơn giản – xuất phản hồi HTML sang tệp cục bộ và kiểm tra tệp đó, thay vì phiên bản trình duyệt
Một vấn đề nghiêm trọng hơn phát sinh khi máy chủ quyết định chặn tất cả lưu lượng truy cập không được công nhậnTrong trường hợp đó, để tiếp tục cạo, chúng tôi cần cung cấp một tác nhân người dùng hợp pháp. May mắn thay, chuỗi tác nhân người dùng của tất cả các trình duyệt đều có sẵn công khai trên internet. Như vậy, chúng ta có thể dễ dàng giả làm một trình duyệt
Hãy xem cách thực hiện việc này trong Python bằng gói 'yêu cầu'
Kết hợp các tiêu đề khác nhau bằng cách sử dụng 'yêu cầu' thực sự là một công việc rất đơn giản. Tất cả những gì chúng ta phải làm là cung cấp chúng ở định dạng từ điển cho tham số 'tiêu đề'
Ví dụ: giả sử chúng tôi muốn gửi yêu cầu GET tới YouTube, giả vờ là khách hàng sử dụng Chrome. Đầu tiên chúng ta cần tìm chuỗi User-Agent của Chrome. Một tìm kiếm nhanh trên Google đã mang lại cho chúng tôi chuỗi này
"Mozilla/5. 0 [Windows NT 10. 0; . 36 [KHTML, như Gecko] Chrome/74. 0. 3729. 169 Safari/537. 36"
Được chứ. Chúng tôi có thể lưu nó trong từ điển với tên trường 'Tác nhân người dùng'
Bây giờ, chúng ta có thể thực hiện yêu cầu GET bằng cách sử dụng phương thức ‘get[]’ thông thường của gói. URL của trang web chúng tôi muốn kết nối được truyền dưới dạng tham số. Thông thường, đó sẽ là tất cả.
Tuy nhiên, để kết hợp các tiêu đề yêu cầu, chúng tôi có thể thêm chúng ở dạng từ điển vào tham số 'tiêu đề' bổ sung. Trong trường hợp của chúng tôi, chúng tôi đã lưu từ điển trong biến 'tiêu đề', vì vậy chúng tôi chuyển nó vào tham số
Đó là nó. Yêu cầu này hiện chứa trường tiêu đề 'Tác nhân người dùng'
Và đây là mã đầy đủ
Bằng cách thêm các trường khác nhau vào từ điển của chúng tôi, chúng tôi có thể kết hợp các tiêu đề khác nhau vào yêu cầu
Xử lý các tiêu đề yêu cầu. Còn bánh quy thì sao?
Nếu xử lý các tiêu đề yêu cầu đơn giản như vậy, thì cookie có gì đặc biệt?
Chà, cookie HTTP là một loại tiêu đề yêu cầu đặc biệt đại diện cho một phần dữ liệu nhỏ được gửi từ một trang web và được lưu trữ trên máy tính của người dùng. Nó khác với các tiêu đề khác, vì chúng tôi không phải là người chọn nó – đó là trang web cho chúng tôi biết cách đặt trường này. Sau đó, cookie có thể được gửi cùng với các yêu cầu tiếp theo của khách hàng
Cookie được thiết kế để trở thành một cơ chế đáng tin cậy giúp các trang web ghi nhớ thông tin trạng thái, chẳng hạn như các mặt hàng được thêm vào giỏ hàng trong cửa hàng trực tuyến hoặc để ghi lại hoạt động duyệt web của người dùngChúng cũng có thể được sử dụng để ghi nhớ các mẩu thông tin tùy ý mà người dùng đã nhập trước đó vào các trường biểu mẫu, chẳng hạn như tên, địa chỉ, mật khẩu và số thẻ tín dụng
Cookie thực hiện các chức năng thiết yếu trong web hiện đạiCó lẽ điều quan trọng nhất là cookie xác thực. Đây là phương pháp phổ biến nhất được các máy chủ web sử dụng để biết liệu người dùng có đăng nhập hay không và họ đăng nhập bằng tài khoản nào. Về cơ bản, điều này có nghĩa là bạn không bắt buộc phải đăng nhập mỗi khi mở hoặc tải lại trang
Cookie được triển khai hơi khác so với 'tác nhân người dùng', vì các trang web thường cho chúng tôi biết cách đặt chúng trong lần đầu tiên chúng tôi truy cập một trang
Chúng ta có thể mở một phiên mới bằng lệnh này
Lưu ý rằng chúng tôi gán phiên cho một biến. Sau này, chúng ta có thể thực hiện các yêu cầu thông qua biến này. Mọi yêu cầu như vậy trong phiên đó sẽ tự động kết hợp các cookie liên tục. Chúng tôi không phải làm bất cứ điều gì. Sau khi hoàn thành, chúng ta phải đóng phiên. Đây là một mã ví dụ.
Chỉ cần nhớ rằng yêu cầu phải được thực hiện thông qua biến phiên. Bạn có thể tìm hiểu thêm về điều đó trong tài liệu 'yêu cầu' chính thức tại đây
Bây giờ bạn đã thêm vũ khí tiêu đề yêu cầu vào kho vũ khí quét web của mình. Hãy cho chúng tôi biết bạn đã triển khai nó như thế nào trong thực tế của mình trong phần bình luận bên dưới
Mong muốn trở thành một Web Scraping Pro?
Khóa học là một phần của Chương trình Khoa học Dữ liệu 365. Bạn có thể khám phá chương trình giảng dạy hoặc đăng ký miễn phí 12 giờ nội dung video từ cơ bản đến nâng cao bằng cách nhấp vào nút bên dưới