Python Web Scraping - Trang web dựa trên biểu mẫu
Trong chương trước, chúng ta đã thấy các trang web động. Trong chương này, chúng ta hãy hiểu việc loại bỏ các trang web hoạt động dựa trên đầu vào dựa trên người dùng, đó là các trang web dựa trên biểu mẫu.
Giới thiệu
Ngày nay WWW (World Wide Web) đang hướng tới phương tiện truyền thông xã hội cũng như nội dung do người dùng tạo. Vì vậy, câu hỏi đặt ra là làm thế nào chúng ta có thể truy cập loại thông tin ngoài màn hình đăng nhập như vậy? Đối với điều này, chúng ta cần xử lý các biểu mẫu và thông tin đăng nhập.
Trong các chương trước, chúng ta đã làm việc với phương thức HTTP GET để yêu cầu thông tin nhưng trong chương này, chúng ta sẽ làm việc với phương thức HTTP POST để đẩy thông tin đến máy chủ web để lưu trữ và phân tích.
Tương tác với các biểu mẫu Đăng nhập
Khi làm việc trên Internet, chắc hẳn bạn đã nhiều lần tiếp xúc với các biểu mẫu đăng nhập. Chúng có thể rất đơn giản như chỉ bao gồm một số trường HTML, nút gửi và trang hành động hoặc chúng có thể phức tạp và có một số trường bổ sung như email, để lại tin nhắn cùng với hình ảnh xác thực vì lý do bảo mật.
Trong phần này, chúng ta sẽ giải quyết một biểu mẫu gửi đơn giản với sự trợ giúp của thư viện yêu cầu Python.
Đầu tiên, chúng ta cần nhập thư viện yêu cầu như sau:
import requests
Bây giờ, chúng ta cần cung cấp thông tin cho các trường của biểu mẫu đăng nhập.
parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}
Trong dòng mã tiếp theo, chúng tôi cần cung cấp URL mà hành động của biểu mẫu sẽ xảy ra.
r = requests.post(“enter the URL”, data = parameters)
print(r.text)
Sau khi chạy script, nó sẽ trả về nội dung của trang mà hành động đã xảy ra.
Giả sử nếu bạn muốn gửi bất kỳ hình ảnh nào với biểu mẫu, thì điều đó rất dễ dàng với request.post (). Bạn có thể hiểu nó với sự trợ giúp của tập lệnh Python sau:
import requests
file = {‘Uploadfile’: open(’C:\Usres\desktop\123.png’,‘rb’)}
r = requests.post(“enter the URL”, files = file)
print(r.text)
Tải Cookie từ Máy chủ Web
Cookie, đôi khi được gọi là cookie web hoặc cookie internet, là một phần nhỏ dữ liệu được gửi từ một trang web và máy tính của chúng tôi lưu trữ nó trong một tệp nằm bên trong trình duyệt web của chúng tôi.
Trong bối cảnh giao dịch với các biểu mẫu đăng nhập, cookie có thể có hai loại. Một, chúng tôi đã đề cập ở phần trước, cho phép chúng tôi gửi thông tin đến một trang web và thứ hai cho phép chúng tôi duy trì trạng thái “đã đăng nhập” vĩnh viễn trong suốt chuyến thăm của chúng tôi vào trang web. Đối với loại biểu mẫu thứ hai, các trang web sử dụng cookie để theo dõi ai đã đăng nhập và ai chưa đăng nhập.
Cookies làm gì?
Ngày nay, hầu hết các trang web đang sử dụng cookie để theo dõi. Chúng tôi có thể hiểu hoạt động của cookie với sự trợ giúp của các bước sau:
Step 1- Đầu tiên, trang web sẽ xác thực thông tin đăng nhập của chúng tôi và lưu trữ nó trong cookie của trình duyệt của chúng tôi. Cookie này thường chứa thông tin theo dõi, thời gian chờ và thông tin theo dõi do máy chủ tạo ra.
Step 2- Tiếp theo, trang web sẽ sử dụng cookie như một bằng chứng xác thực. Xác thực này luôn được hiển thị bất cứ khi nào chúng tôi truy cập trang web.
Cookie rất có vấn đề đối với người tìm kiếm trên web bởi vì nếu người tìm kiếm web không theo dõi cookie, biểu mẫu đã gửi sẽ được gửi lại và ở trang tiếp theo có vẻ như họ chưa bao giờ đăng nhập. Rất dễ dàng theo dõi cookie với sự trợ giúp của Python requests thư viện, như hình dưới đây -
import requests
parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}
r = requests.post(“enter the URL”, data = parameters)
Trong dòng mã trên, URL sẽ là trang sẽ hoạt động như bộ xử lý cho biểu mẫu đăng nhập.
print(‘The cookie is:’)
print(r.cookies.get_dict())
print(r.text)
Sau khi chạy tập lệnh trên, chúng tôi sẽ truy xuất cookie từ kết quả của yêu cầu cuối cùng.
Có một vấn đề khác với cookie mà đôi khi các trang web thường xuyên sửa đổi cookie mà không có cảnh báo. Tình huống như vậy có thể được giải quyếtrequests.Session() như sau -
import requests
session = requests.Session()
parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}
r = session.post(“enter the URL”, data = parameters)
Trong dòng mã trên, URL sẽ là trang sẽ hoạt động như bộ xử lý cho biểu mẫu đăng nhập.
print(‘The cookie is:’)
print(r.cookies.get_dict())
print(r.text)
Quan sát rằng bạn có thể dễ dàng hiểu sự khác biệt giữa tập lệnh có phiên và không có phiên.
Tự động hóa biểu mẫu với Python
Trong phần này, chúng ta sẽ giải quyết một mô-đun Python có tên là Mechanize sẽ giảm bớt công việc của chúng ta và tự động hóa quá trình điền vào biểu mẫu.
Cơ giới hóa mô-đun
Mô-đun cơ học cung cấp cho chúng ta một giao diện cấp cao để tương tác với các biểu mẫu. Trước khi bắt đầu sử dụng, chúng ta cần cài đặt nó bằng lệnh sau:
pip install mechanize
Lưu ý rằng nó sẽ chỉ hoạt động trong Python 2.x.
Thí dụ
Trong ví dụ này, chúng tôi sẽ tự động hóa quá trình điền vào biểu mẫu đăng nhập có hai trường là email và mật khẩu -
import mechanize
brwsr = mechanize.Browser()
brwsr.open(Enter the URL of login)
brwsr.select_form(nr = 0)
brwsr['email'] = ‘Enter email’
brwsr['password'] = ‘Enter password’
response = brwsr.submit()
brwsr.submit()
Đoạn mã trên rất dễ hiểu. Đầu tiên, chúng tôi nhập mô-đun cơ giới hóa. Sau đó, một đối tượng trình duyệt Cơ học đã được tạo. Sau đó, chúng tôi điều hướng đến URL đăng nhập và chọn biểu mẫu. Sau đó, tên và giá trị được chuyển trực tiếp đến đối tượng trình duyệt.