Hướng dẫn python form submit - gửi biểu mẫu python
& nbsp; · 12 phút Đọc · Cập nhật tháng 5 năm 2022 · Xóa web · 12 min read · Updated may 2022 · Web Scraping · 12 min read · Updated may 2022 · Web Scraping Show
Nội dung chính ShowShow
Một trong những nhiệm vụ thách thức nhất trong việc cạo web là có thể đăng nhập tự động và trích xuất dữ liệu trong tài khoản của bạn trên trang web đó. Trong hướng dẫn này, bạn sẽ tìm hiểu làm thế nào bạn có thể trích xuất tất cả các biểu mẫu từ các trang web và điền và gửi chúng bằng các thư viện yêu cầu_html và đẹp.requests_html and BeautifulSoup libraries.requests_html and BeautifulSoup libraries. Để bắt đầu, hãy cài đặt chúng:
Liên quan: Cách tự động hóa đăng nhập bằng Selenium trong Python. How to Automate Login using Selenium in Python. How to Automate Login using Selenium in Python. Trích xuất các biểu mẫu từ các trang webGửi biểu mẫu webform_extractor.py:
Sự kết luận
Bạn muốn tìm hiểu thêm về việc quét web? Cũng đọc
Bảng bình luậnres.html.render() line executes Javascript before trying to extract anything, as some websites load their content dynamically using Javascript, uncomment it if you feel that the website is using Javascript to load forms. Làm thế nào để bạn gửi một yêu cầu bài đăng với một cơ thể trong Python? Làm cách nào để nhận dữ liệu biểu mẫu HTML trong Python? 0Làm thế nào để bạn trích xuất dữ liệu từ một biểu mẫu đã được gửi thông qua phương thức POST? Làm thế nào để bạn nhận được dữ liệu từ một biểu mẫu trong Python? 3Một trong những nhiệm vụ thách thức nhất trong việc cạo web là có thể đăng nhập tự động và trích xuất dữ liệu trong tài khoản của bạn trên trang web đó. Trong hướng dẫn này, bạn sẽ tìm hiểu làm thế nào bạn có thể trích xuất tất cả các biểu mẫu từ các trang web và điền và gửi chúng bằng các thư viện yêu cầu_html và đẹp.requests_html and BeautifulSoup libraries. Để bắt đầu, hãy cài đặt chúng: 6Liên quan: Cách tự động hóa đăng nhập bằng Selenium trong Python. How to Automate Login using Selenium in Python. You can always check the entire code on this page. Mở một tập tin mới. Tôi đang gọi nó là form_extractor.py:form_extractor.py: 7Để bắt đầu, chúng tôi cần một cách để đảm bảo rằng sau khi thực hiện các yêu cầu đến trang web đích, chúng tôi đang lưu trữ các cookie được cung cấp bởi trang web đó để chúng tôi có thể duy trì phiên: Bây giờ biến enumerate() just for numerating extracted forms. Let's save the Python file as
8 and run it: 0
1Bạn có thể nhận thấy rằng tôi đã nhận xét rằng dòng res.html.render () thực thi javaScript trước khi cố gắng trích xuất bất cứ điều gì, vì một số trang web tải nội dung của họ bằng cách sử dụng javaScript, giải phóng nó nếu bạn cảm thấy trang web đang sử dụng javascript để tải các biểu mẫu.res.html.render() line executes Javascript before trying to extract anything, as some websites load their content dynamically using Javascript, uncomment it if you feel that the website is using Javascript to load forms. Vì vậy, hàm trên sẽ có thể trích xuất tất cả các biểu mẫu từ một trang web, nhưng chúng tôi cần một cách để trích xuất các chi tiết của từng biểu mẫu, chẳng hạn như đầu vào, biểu mẫu How to Download All Images from a Web Page in Python. Gửi biểu mẫu web
4 and 5 fields.
0Chúng tôi đang lấy các chức năng mà chúng tôi đã làm trước đó từ tệp 8, hãy bắt đầu sử dụng chúng.Đầu tiên, chúng ta hãy trích xuất tất cả các biểu mẫu có sẵn và in chúng vào màn hình: 1Bây giờ để làm cho mã của chúng tôi linh hoạt nhất có thể (trong đó chúng tôi có thể chạy cho bất kỳ trang web nào), hãy nhắc người dùng tập lệnh chọn biểu mẫu nào để gửi: 2Bây giờ hãy xây dựng dữ liệu gửi của chúng tôi: 3Vì vậy, mã trên sẽ sử dụng giá trị mặc định của các trường ẩn (như mã thông báo CSRF) và nhắc người dùng cho các trường đầu vào khác (như tìm kiếm, email, văn bản và các trường khác). Nó cũng sẽ nhắc người dùng chọn từ các tùy chọn 4 có sẵn.Hãy xem cách chúng ta có thể gửi nó dựa trên phương thức: 4Tôi chỉ sử dụng 0 hoặc 1 ở đây, nhưng bạn có thể mở rộng điều này cho các phương thức HTTP khác như 7 và 2 (sử dụng Phiên.put () và Phiên.delete () phương thức tương ứng).session.put() and session.delete() methods respectively).session.put() and
session.delete() methods respectively).Được rồi, bây giờ chúng tôi có biến 9 có chứa phản hồi HTTP; Điều này sẽ chứa trang web mà máy chủ gửi sau khi gửi biểu mẫu; Hãy chắc chắn rằng nó đã hoạt động. Mã dưới đây chuẩn bị nội dung HTML của trang web để lưu nó trên máy tính cục bộ của chúng tôi: 5Tất cả những điều này đang làm là thay thế các URL tương đối (như/wiki/lập trình_langage) bằng các URL tuyệt đối (chẳng hạn như & nbsp; https: //www.wikipedia.org/wiki/programming_l Language) Tôi đã lưu tất cả nội dung vào tệp cục bộ 00, hãy mở nó trong trình duyệt của chúng tôi:/wiki/Programming_language) with absolute URLs (such as https://www.wikipedia.org/wiki/Programming_language), so we can adequately browse the page locally in our computer. I've saved all the content into a local file 00, let's open it in our browser:/wiki/Programming_language) with absolute URLs (such as https://www.wikipedia.org/wiki/Programming_language), so we can adequately browse the page locally in our computer. I've saved all the content into a local file 00, let's open it in our
browser: 6Được rồi, mã được thực hiện. Đây là cách tôi thực hiện điều này: 7Ban đầu, tập lệnh đã nhắc tôi chọn từ danh sách các biểu mẫu. Trong trường hợp của chúng tôi, chỉ có một hình thức. Sau đó, nó đã nhắc tôi cho tất cả các biểu mẫu không ẩn có sẵn, đó là trường 01 và 02.Điều này về cơ bản giống như điền thủ công biểu mẫu trong trình duyệt web và chọn ngôn ngữ: Sau khi tôi nhấn Enter trong thực thi mã của mình, điều này sẽ gửi biểu mẫu, lưu trang kết quả cục bộ và tự động mở nó trong trình duyệt web mặc định: Đây là cách Python thấy kết quả, vì vậy chúng tôi đã gửi thành công mẫu tìm kiếm tự động và tải trang kết quả với sự trợ giúp của Python! Sự kết luậnĐược rồi, đó là nó. Trong hướng dẫn này, chúng tôi đã tìm kiếm Wikipedia. Tuy nhiên, như đã đề cập trước đó, bạn có thể sử dụng nó trên bất kỳ biểu mẫu nào bạn muốn, đặc biệt là cho các biểu mẫu đăng nhập, trong đó bạn có thể đăng nhập và tiếp tục trích xuất dữ liệu yêu cầu xác thực người dùng. Xem cách bạn có thể mở rộng điều này. Chẳng hạn, bạn có thể cố gắng tạo một người gửi cho tất cả các biểu mẫu (vì chúng tôi chỉ sử dụng biểu mẫu đầu tiên ở đây) hoặc bạn có thể tạo một trình thu thập thông tin tinh vi để trích xuất tất cả các liên kết trang web và tìm thấy tất cả các hình thức của một trang web cụ thể. Tuy nhiên, hãy nhớ rằng một trang web có thể cấm địa chỉ IP của bạn nếu bạn yêu cầu nhiều trang trong một thời gian ngắn. Trong trường hợp đó, bạn có thể làm chậm trình thu thập dữ liệu của mình hoặc sử dụng proxy. Ngoài ra, bạn có thể mở rộng mã này bằng cách tự động đăng nhập bằng Selenium. Kiểm tra & nbsp; hướng dẫn này về cách bạn có thể làm điều đó! Bạn có thể nhận được mã hoàn chỉnh của hướng dẫn này ở đây. Bạn muốn tìm hiểu thêm về việc quét web?Cuối cùng, nếu bạn muốn đào sâu hơn vào việc quét web với các thư viện Python khác nhau, không chỉ Đẹp, các khóa học dưới đây chắc chắn sẽ có giá trị đối với bạn:
Học thêm: Cách chuyển đổi các bảng HTML thành các tệp CSV trong Python. How to Convert HTML Tables into CSV Files in Python. How to Convert HTML Tables into CSV Files in Python. Hạnh phúc cào ♥ Xem đầy đủ mã Cũng đọcBảng bình luậnLàm thế nào để bạn gửi một yêu cầu bài đăng với một cơ thể trong Python?Bạn sẽ muốn điều chỉnh dữ liệu bạn gửi trong phần thân của yêu cầu của bạn với URL được chỉ định. Cú pháp: requests.post (url, data = {key: value}, json = {key: value}, tiêu đề = {key: value}, args) *(data, json, tham số tiêu đề là tùy chọn.)requests.post(url, data={key: value}, json={key: value}, headers={key:value}, args) *(data, json, headers parameters are optional.)requests. post(url, data={key: value}, json={key: value}, headers={key:value}, args) *(data, json, headers parameters are optional.) Làm cách nào để nhận dữ liệu biểu mẫu HTML trong Python?Để đăng dữ liệu biểu mẫu HTML lên máy chủ ở định dạng được mã hóa URL bằng Python, bạn cần thực hiện yêu cầu POST HTTP cho máy chủ và cung cấp dữ liệu biểu mẫu HTML trong phần thân của thông báo Python Post. Bạn cũng cần chỉ định kiểu dữ liệu bằng cách sử dụng tiêu đề yêu cầu loại nội dung: Ứng dụng/X-www-form-urlencoded.make an HTTP POST request to the server and provide the HTML form data in the body of the Python POST message. You also need to specify the data type using the Content-Type: application/x-www-form-urlencoded request header.make an HTTP POST request to the server and provide the HTML form data in the body of the Python POST message. You also need to specify the data type using the Content-Type: application/x-www-form-urlencoded request header. Làm thế nào để bạn trích xuất dữ liệu từ một biểu mẫu đã được gửi thông qua phương thức POST?Câu trả lời đúng là "request.form".Yêu cầu.Lệnh biểu mẫu được sử dụng để thu thập các giá trị trong một biểu mẫu với Phương thức = "Post".Request.Form". The Request. Form command is used to collect values in a form with method="post".Request. Form". The Request. Form command is used to collect values in a form with method="post". Làm thế nào để bạn nhận được dữ liệu từ một biểu mẫu trong Python?request.form.get (Hồi fname trực tuyến) sẽ nhận đầu vào từ giá trị đầu vào có thuộc tính tên là fname và lưu trữ trong biến First_name .. request.form.get (trên mạng lname) sẽ nhận đầu vào từ giá trị đầu vào có thuộc tính tên là lname và lưu trữ trong biến last_name .. |