Hướng dẫn navigate website with python - điều hướng trang web bằng python

Có rất nhiều tài nguyên tốt đã có trên StackoverFlow nhưng tôi vẫn gặp vấn đề. Tôi đã đến thăm các nguồn này:

  • Cách gửi truy vấn đến trang .aspx trong Python
  • Gửi yêu cầu bài đăng đến trang ASPX
  • Xo bỏ trang web ASPX với Python bằng cách sử dụng đẹp
  • //www.pythonforbeginners.com/cheatsheet/python-mechanize-cheat-sheet

Tôi đang cố gắng truy cập //www.latax.state.la.us/menu_parishtaxrolls/taxrolls.aspx và chọn một giáo xứ. Tôi tin rằng điều này buộc một bài đăng và cho phép tôi chọn một năm, đăng lại và cho phép lựa chọn nhiều hơn. Tôi đã viết kịch bản của mình một vài cách khác nhau theo các nguồn trên và không thể gửi thành công trang web để cho phép tôi vào một năm.

Mã hiện tại của tôi

import urllib
from bs4 import BeautifulSoup
import mechanize

headers = [
    ['Accept','text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'],
    ['Origin', '//www.indiapost.gov.in'],
    ['User-Agent', 'Mozilla/5.0 [Windows NT 6.1] AppleWebKit/537.17 [KHTML, like Gecko]  Chrome/24.0.1312.57 Safari/537.17'],
    ['Content-Type', 'application/x-www-form-urlencoded'],
    ['Referer', '//www.latax.state.la.us/Menu_ParishTaxRolls/TaxRolls.aspx'],
    ['Accept-Encoding', 'gzip,deflate,sdch'],
    ['Accept-Language', 'en-US,en;q=0.8'],
]

br = mechanize.Browser[]
br.addheaders = headers

url = '//www.latax.state.la.us/Menu_ParishTaxRolls/TaxRolls.aspx'

response = br.open[url]
# first HTTP request without form data
soup = BeautifulSoup[response]
# parse and retrieve two vital form values
viewstate = soup.findAll["input", {"type": "hidden", "name": "__VIEWSTATE"}]
eventvalidation = soup.findAll["input", {"type": "hidden", "name": "__EVENTVALIDATION"}]

formData = [
    ['__EVENTVALIDATION', eventvalidation[0]['value']],
    ['__VIEWSTATE', viewstate[0]['value']],
    ['__VIEWSTATEENCRYPTED',''],

]



try:
    fout = open['C:\\GIS\\tmp.htm', 'w']
except:
    print['Could not open output file\n']

fout.writelines[response.readlines[]]
fout.close[]

Tôi cũng đã thử điều này trong vỏ và những gì tôi đã nhập cộng với những gì tôi nhận được [sửa đổi để cắt giảm số lượng lớn] có thể được tìm thấy //pastebin.com/kaw5vtxp

Dù sao tôi cũng cố gắng thay đổi giá trị trong danh sách thả xuống giáo xứ và đăng tôi được đưa lên trang đăng nhập WebMaster.

Tôi có đang tiếp cận điều này một cách chính xác không? Bất kỳ suy nghĩ sẽ cực kỳ hữu ích.

Thanks!

Nội phân chính

  • Kiểm soát web với selen
  • Dọn dẹp
  • Kết luận
  • Bạn có thể tạo các trang web tương tác với Python không?
  • Làm thế nào để bạn tự động hóa một trang web trong Python?
  • Làm thế nào để bạn tự động hóa các tương tác trên một trang web?
  • Python có thể được sử dụng để tự động hóa không?
  • Làm cách nào để tự động hóa dữ liệu trực tiếp vào trang web của tôi bằng Python?

Một cuộc phiêu lưu trong tự động hóa web đơn giản

Vấn đề: Gửi bài tập của lớp yêu cầu điều hướng một mê cung của các trang web phức tạp đến mức nhiều lần tôi đã chuyển một bài tập vào sai vị trí. Ngoài ra, trong khi quá trình này chỉ mất 1 phút2, đôi khi có vẻ như là một rào cản không thể vượt qua [như khi tôi đã hoàn thành một bài tập quá muộn vào ban đêm và tôi hầu như không thể nhớ mật khẩu của mình]. Submitting class assignments requires navigating a maze of web pages so complex that several times I’ve turned an assignment in to the wrong place. Also, while this process only takes 1–2 minutes, it sometimes seems like an insurmountable barrier [like when I’ve finished an assignment way too late at night and I can barely remember my password].

Giải pháp: Sử dụng Python để tự động gửi bài tập đã hoàn thành! Lý tưởng nhất, tôi sẽ có thể lưu một bài tập, nhập một vài khóa và tải lên công việc của tôi trong vài giây. Lúc đầu, điều này nghe có vẻ quá tốt là đúng, nhưng sau đó tôi phát hiện ra Selenium, một công cụ có thể được sử dụng với Python để điều hướng web cho bạn.Use Python to automatically submit completed assignments! Ideally, I would be able to save an assignment, type a few keys, and have my work uploaded in a matter of seconds. At first this sounded too good to be true, but then I discovered selenium, a tool which can be used with Python to navigate the web for you.

XKCD bắt buộc

Bất cứ khi nào chúng tôi thấy mình lặp lại các hành động tẻ nhạt trên web với cùng một chuỗi các bước, đây là một cơ hội tuyệt vời để viết một chương trình để tự động hóa quy trình cho chúng tôi. Với Selenium và Python, chúng ta chỉ cần viết một kịch bản một lần, và sau đó chúng ta có thể chạy nó nhiều lần và tự cứu mình khỏi việc lặp lại các nhiệm vụ đơn điệu [và trong trường hợp của tôi, hãy loại bỏ cơ hội gửi một bài tập ở sai vị trí]!

Ở đây, tôi sẽ đi qua giải pháp tôi phát triển để tự động [và chính xác] gửi bài tập của mình. Trên đường đi, chúng tôi sẽ đề cập đến những điều cơ bản của việc sử dụng Python và Selenium để lập trình điều khiển web. Mặc dù chương trình này hoạt động [tôi đã sử dụng nó mỗi ngày!] Tuy nhiên, các kỹ thuật chung ở đây có thể được áp dụng cho một số tình huống vô hạn. [Nếu bạn muốn xem mã hoàn chỉnh, nó có sẵn trên GitHub].

Cách tiếp cận

Trước khi chúng ta có thể đến phần thú vị của việc tự động hóa web, chúng ta cần tìm ra cấu trúc chung của giải pháp của chúng ta. Nhảy ngay vào lập trình mà không có kế hoạch là một cách tuyệt vời để lãng phí nhiều giờ trong sự thất vọng. Tôi muốn viết một chương trình để gửi các bài tập khóa học đã hoàn thành đến vị trí chính xác trên Canvas [Hệ thống quản lý học tập của trường đại học của tôi]. Bắt đầu với những điều cơ bản, tôi cần một cách để nói với chương trình tên của bài tập để gửi và lớp. Tôi đã đi với một cách tiếp cận đơn giản và tạo một thư mục để giữ các bài tập đã hoàn thành với các thư mục trẻ em cho mỗi lớp. Trong các thư mục trẻ em, tôi đặt tài liệu đã hoàn thành được đặt tên cho bài tập cụ thể. Chương trình có thể tìm ra tên của lớp từ thư mục và tên của bài tập theo tiêu đề tài liệu.

Ở đây, một ví dụ trong đó tên của lớp là EECS491 và bài tập là gán 3 - suy luận trong các mô hình đồ họa lớn hơn.

Cấu trúc tệp [trái] và gán hoàn toàn [phải]

Phần đầu tiên của chương trình là một vòng lặp đi qua các thư mục để tìm bài tập và lớp mà chúng tôi lưu trữ trong một bộ tuple Python:

# os for file management
import os
# Build tuple of [class, file] to turn in
submission_dir = 'completed_assignments'
dir_list = list[os.listdir[submission_dir]]for directory in dir_list:
file_list = list[os.listdir[os.path.join[submission_dir,
directory]]]
if len[file_list] != 0:
file_tup = [directory, file_list[0]]

print[file_tup]

['EECS491', 'Assignment 3 - Inference in Larger Graphical Models.txt']

Điều này quan tâm đến việc quản lý tệp và chương trình hiện đã biết chương trình và nhiệm vụ để quay vào. Bước tiếp theo là sử dụng selenium để điều hướng đến trang web chính xác và tải lên bài tập.

Kiểm soát web với selen

Để bắt đầu với selenium, chúng tôi nhập thư viện và tạo trình điều khiển web, đây là trình duyệt được điều khiển bởi chương trình của chúng tôi. Trong trường hợp này, tôi sẽ sử dụng Chrome làm trình duyệt của mình và gửi trình điều khiển đến trang web Canvas nơi tôi gửi bài tập.

import selenium# Using Chrome to access web
driver = webdriver.Chrome[]
# Open the website
driver.get['//canvas.case.edu']

Khi chúng tôi mở trang web Canvas, chúng tôi được chào đón với trở ngại đầu tiên của chúng tôi, một hộp đăng nhập! Để vượt qua điều này, chúng tôi sẽ cần điền ID và mật khẩu và nhấp vào nút Đăng nhập.

Hãy tưởng tượng trình điều khiển web là một người chưa từng thấy trang web trước đây: chúng ta cần nói chính xác nơi nhấp vào, những gì cần gõ và nhấn nút nào. Có một số cách để nói với trình điều khiển web của chúng tôi những yếu tố cần tìm, tất cả đều sử dụng bộ chọn. Bộ chọn là một định danh duy nhất cho một phần tử trên trang web. Để tìm bộ chọn cho một yếu tố cụ thể, giả sử hộp ID CWRU ở trên, chúng tôi cần kiểm tra trang web. Trong Chrome, điều này được thực hiện bằng cách nhấn vào CTRL + Shift + I, hoặc nhấp chuột phải vào bất kỳ yếu tố nào và chọn kiểm tra. Điều này mang đến các công cụ của nhà phát triển Chrome, một ứng dụng cực kỳ hữu ích hiển thị HTML bên dưới bất kỳ trang web nào.

Để tìm một bộ chọn cho hộp ID CWRU ID, tôi đã nhấp chuột phải vào hộp, nhấn vào Kiểm tra, và thấy những điều sau đây trong các công cụ của nhà phát triển. Dòng được tô sáng tương ứng với phần tử hộp ID [dòng này được gọi là thẻ HTML].

HTML trong các công cụ nhà phát triển Chrome cho trang web

HTML này có thể trông quá sức, nhưng chúng ta có thể bỏ qua phần lớn thông tin và tập trung vào các phần ____10 và

# os for file management
import os
# Build tuple of [class, file] to turn in
submission_dir = 'completed_assignments'
dir_list = list[os.listdir[submission_dir]]for directory in dir_list:
file_list = list[os.listdir[os.path.join[submission_dir,
directory]]]
if len[file_list] != 0:
file_tup = [directory, file_list[0]]

print[file_tup]

['EECS491', 'Assignment 3 - Inference in Larger Graphical Models.txt']
1. [Chúng được gọi là thuộc tính của thẻ HTML].

Để chọn hộp ID với trình điều khiển web của chúng tôi, chúng tôi có thể sử dụng thuộc tính

# os for file management
import os
# Build tuple of [class, file] to turn in
submission_dir = 'completed_assignments'
dir_list = list[os.listdir[submission_dir]]for directory in dir_list:
file_list = list[os.listdir[os.path.join[submission_dir,
directory]]]
if len[file_list] != 0:
file_tup = [directory, file_list[0]]

print[file_tup]

['EECS491', 'Assignment 3 - Inference in Larger Graphical Models.txt']
2 hoặc
# os for file management
import os
# Build tuple of [class, file] to turn in
submission_dir = 'completed_assignments'
dir_list = list[os.listdir[submission_dir]]for directory in dir_list:
file_list = list[os.listdir[os.path.join[submission_dir,
directory]]]
if len[file_list] != 0:
file_tup = [directory, file_list[0]]

print[file_tup]

['EECS491', 'Assignment 3 - Inference in Larger Graphical Models.txt']
3 mà chúng tôi tìm thấy trong các công cụ nhà phát triển. Trình điều khiển web trong Selenium có nhiều phương thức khác nhau để chọn các yếu tố trên trang web và thường có nhiều cách để chọn cùng một mục chính xác:

# Select the id box
id_box = driver.find_element_by_name['username']
# Equivalent Outcome!
id_box = driver.find_element_by_id['username']

Chương trình của chúng tôi hiện có quyền truy cập vào

# os for file management
import os
# Build tuple of [class, file] to turn in
submission_dir = 'completed_assignments'
dir_list = list[os.listdir[submission_dir]]for directory in dir_list:
file_list = list[os.listdir[os.path.join[submission_dir,
directory]]]
if len[file_list] != 0:
file_tup = [directory, file_list[0]]

print[file_tup]

['EECS491', 'Assignment 3 - Inference in Larger Graphical Models.txt']
4 và chúng tôi có thể tương tác với nó theo nhiều cách khác nhau, chẳng hạn như gõ vào các phím hoặc nhấp chuột [nếu chúng tôi đã chọn một nút].

# Send id information
id_box.send_keys['my_username']

Chúng tôi thực hiện quy trình tương tự cho hộp mật khẩu và nút đăng nhập, chọn từng quy trình dựa trên những gì chúng tôi thấy trong các công cụ của nhà phát triển Chrome. Sau đó, chúng tôi gửi thông tin đến các yếu tố hoặc nhấp vào chúng khi cần thiết.

# Find password box
pass_box = driver.find_element_by_name['password']
# Send password
pass_box.send_keys['my_password']
# Find login button
login_button = driver.find_element_by_name['submit']
# Click login
login_button.click[]

Khi chúng tôi đã đăng nhập, chúng tôi được chào đón bởi bảng điều khiển hơi đáng sợ này:

Chúng tôi một lần nữa cần hướng dẫn chương trình thông qua trang web bằng cách chỉ định chính xác các yếu tố sẽ nhấp vào và thông tin để nhập. Trong trường hợp này, tôi nói với chương trình chọn các khóa học từ menu ở bên trái, và sau đó lớp tương ứng với bài tập tôi cần phải tham gia:

# Find and click on list of courses
courses_button = driver.find_element_by_id['global_nav_courses_link']
courses_button.click[]# Get the name of the folder
folder = file_tup[0]

# Class to select depends on folder
if folder == 'EECS491':
class_select = driver.find_element_by_link_text['Artificial Intelligence: Probabilistic Graphical Models [100/10039]']

elif folder == 'EECS531':
class_select = driver.find_element_by_link_text['Computer Vision [100/10040]']
# Click on the specific class
class_select.click[]

Chương trình tìm thấy lớp chính xác bằng cách sử dụng tên của thư mục chúng tôi lưu trữ trong bước đầu tiên. Trong trường hợp này, tôi sử dụng phương pháp lựa chọn

# os for file management
import os
# Build tuple of [class, file] to turn in
submission_dir = 'completed_assignments'
dir_list = list[os.listdir[submission_dir]]for directory in dir_list:
file_list = list[os.listdir[os.path.join[submission_dir,
directory]]]
if len[file_list] != 0:
file_tup = [directory, file_list[0]]

print[file_tup]

['EECS491', 'Assignment 3 - Inference in Larger Graphical Models.txt']
5 để tìm lớp cụ thể. Văn bản liên kết trên mạng cho một phần tử chỉ là một bộ chọn khác mà chúng ta có thể tìm thấy bằng cách kiểm tra trang. :

Kiểm tra trang để tìm bộ chọn cho một lớp cụ thể

Quy trình công việc này có vẻ hơi tẻ nhạt, nhưng hãy nhớ rằng, chúng tôi chỉ phải làm điều đó một lần khi chúng tôi viết chương trình của mình! Sau đó, chúng tôi có thể đạt được nhiều lần tùy thích và chương trình sẽ điều hướng qua tất cả các trang này cho chúng tôi.

Chúng tôi sử dụng cùng một trang kiểm tra - chọn phần tử - tương tác với quy trình phần tử để có thêm một vài màn hình. Cuối cùng, chúng tôi đạt được trang gửi bài tập:

Tại thời điểm này, tôi có thể thấy vạch đích, nhưng ban đầu màn hình này làm tôi bối rối. Tôi có thể nhấp vào hộp Chọn Tệp Tệp khá dễ dàng, nhưng làm thế nào tôi phải chọn tệp thực tế mà tôi cần để tải lên? Câu trả lời hóa ra là cực kỳ đơn giản! Chúng tôi định vị hộp

# os for file management
import os
# Build tuple of [class, file] to turn in
submission_dir = 'completed_assignments'
dir_list = list[os.listdir[submission_dir]]for directory in dir_list:
file_list = list[os.listdir[os.path.join[submission_dir,
directory]]]
if len[file_list] != 0:
file_tup = [directory, file_list[0]]

print[file_tup]

['EECS491', 'Assignment 3 - Inference in Larger Graphical Models.txt']
6 bằng bộ chọn và sử dụng phương thức
# os for file management
import os
# Build tuple of [class, file] to turn in
submission_dir = 'completed_assignments'
dir_list = list[os.listdir[submission_dir]]for directory in dir_list:
file_list = list[os.listdir[os.path.join[submission_dir,
directory]]]
if len[file_list] != 0:
file_tup = [directory, file_list[0]]

print[file_tup]

['EECS491', 'Assignment 3 - Inference in Larger Graphical Models.txt']
7 để chuyển đường dẫn chính xác của tệp [được gọi là
# os for file management
import os
# Build tuple of [class, file] to turn in
submission_dir = 'completed_assignments'
dir_list = list[os.listdir[submission_dir]]for directory in dir_list:
file_list = list[os.listdir[os.path.join[submission_dir,
directory]]]
if len[file_list] != 0:
file_tup = [directory, file_list[0]]

print[file_tup]

['EECS491', 'Assignment 3 - Inference in Larger Graphical Models.txt']
8 trong mã bên dưới] cho hộp:

# Choose File button
choose_file = driver.find_element_by_name['attachments[0][uploaded_data]']
# Complete path of the file
file_location = os.path.join[submission_dir, folder, file_name]
# Send the file location to the button
choose_file.send_keys[file_location]

Đó là nó! Bằng cách gửi đường dẫn chính xác của tệp đến nút, chúng ta có thể bỏ qua toàn bộ quá trình điều hướng qua các thư mục để tìm tệp phù hợp. Sau khi gửi vị trí, chúng tôi được thưởng bằng màn hình sau đây cho thấy tệp của chúng tôi được tải lên và sẵn sàng để gửi.

Bây giờ, chúng tôi chọn nút Gửi bài tập, nhấp và bài tập của chúng tôi được bật vào!

# Locate submit button and click
submit_assignment = driver.find_element_by_id['submit_file_button']
submit_assignent.click[]

Dọn dẹp

Quản lý tệp luôn là một bước quan trọng và tôi muốn chắc chắn rằng tôi không đăng ký lại hoặc mất các bài tập cũ. Tôi đã quyết định giải pháp tốt nhất là lưu trữ một tệp duy nhất được gửi trong thư mục

# os for file management
import os
# Build tuple of [class, file] to turn in
submission_dir = 'completed_assignments'
dir_list = list[os.listdir[submission_dir]]for directory in dir_list:
file_list = list[os.listdir[os.path.join[submission_dir,
directory]]]
if len[file_list] != 0:
file_tup = [directory, file_list[0]]

print[file_tup]

['EECS491', 'Assignment 3 - Inference in Larger Graphical Models.txt']
9 tại một thời điểm và chuyển tệp sang thư mục A
import selenium# Using Chrome to access web
driver = webdriver.Chrome[]
# Open the website
driver.get['//canvas.case.edu']
0 sau khi chúng được bật. đổi tên nó bằng vị trí mong muốn:

# Location of files after submission
submitted_file_location = os.path.join[submitted_dir, submitted_file_name]
# Rename essentially copies and pastes files
os.rename[file_location, submitted_file_location]

Tất cả các mã tố tụng được kết thúc trong một tập lệnh duy nhất mà tôi có thể chạy từ dòng lệnh. Để hạn chế các cơ hội cho các sai lầm, tôi chỉ gửi một bài tập tại một thời điểm, đó là một vấn đề lớn cho rằng chỉ mất khoảng 5 giây để chạy chương trình!

Đây là những gì nó trông giống như khi tôi bắt đầu chương trình:

Chương trình cung cấp cho tôi cơ hội để đảm bảo đây là bài tập chính xác trước khi tải lên. Sau khi chương trình hoàn thành, tôi nhận được đầu ra sau:

Trong khi chương trình đang chạy, tôi có thể xem Python đi làm cho tôi:

Kết luận

Kỹ thuật tự động hóa web với Python hoạt động tuyệt vời cho nhiều nhiệm vụ, cả chung và trong lĩnh vực khoa học dữ liệu của tôi. Ví dụ: chúng tôi có thể sử dụng selenium để tự động tải xuống các tệp dữ liệu mới mỗi ngày [giả sử trang web không có API]. Mặc dù có vẻ như rất nhiều công việc để viết tập lệnh ban đầu, nhưng lợi ích đến từ thực tế là chúng ta có thể có máy tính lặp lại chuỗi này nhiều lần như muốn theo cách chính xác. Chương trình sẽ không bao giờ mất tập trung và đi lang thang lên Twitter. Nó sẽ trung thành thực hiện cùng một loạt các bước chính xác với tính nhất quán hoàn hảo [hoạt động tuyệt vời cho đến khi trang web thay đổi].

Tôi nên đề cập đến việc bạn muốn cẩn thận trước khi bạn tự động hóa các nhiệm vụ quan trọng. Ví dụ này có nguy cơ tương đối thấp vì tôi luôn có thể quay lại và gửi lại các bài tập và tôi thường kiểm tra kỹ các bài tập thủ công của chương trình. Các trang web thay đổi và nếu bạn không thay đổi chương trình để phản hồi, bạn có thể kết thúc với một kịch bản làm một cái gì đó hoàn toàn khác so với những gì bạn dự định ban đầu!

Về mặt thanh toán, chương trình này giúp tôi tiết kiệm khoảng 30 giây cho mỗi bài tập và mất 2 giờ để viết. Vì vậy, nếu tôi sử dụng nó để biến trong 240 bài tập, thì tôi sẽ đi ra trước đúng giờ! Tuy nhiên, việc chi trả cho chương trình này là thiết kế một giải pháp tuyệt vời cho một vấn đề và học hỏi rất nhiều trong quá trình này. Mặc dù thời gian của tôi có thể đã được dành hiệu quả hơn khi làm việc cho các nhiệm vụ thay vì tìm ra cách tự động biến chúng vào, tôi hoàn toàn thích thử thách này. Có một vài điều thỏa mãn như giải quyết vấn đề, và Python hóa ra là một công cụ khá tốt để làm chính xác điều đó.

Như mọi khi, tôi hoan nghênh phản hồi và phê bình mang tính xây dựng. Tôi có thể đạt được trên Twitter @Koehrsen_will.

Bạn có thể tạo các trang web tương tác với Python không?

Ngôn ngữ lập trình Python có thể được sử dụng để tạo ra rất nhiều loại thứ khác nhau, bao gồm cả các trang web. Làm cho các trang web có Python dễ dàng hơn hầu hết mọi người nghĩ vì thực tế là ngôn ngữ này sử dụng một thứ gọi là khung.. Making websites with Python is easier than most people think because of the fact that this language makes use of something called “frameworks.”

Làm thế nào để bạn tự động hóa một trang web trong Python?

Cách chạy các bài kiểm tra selen đầu tiên của bạn với Python: ví dụ..

Đầu tiên nhập các lớp WebDriver và khóa từ Selenium. ....

Tiếp theo, tạo một thể hiện Chrome với đường dẫn của trình điều khiển mà bạn đã tải xuống qua các trang web của trình duyệt tương ứng. ....

Tiếp theo, sử dụng. ....

Khi trang tải thành công, bạn có thể sử dụng ..

Làm thế nào để bạn tự động hóa các tương tác trên một trang web?

Áp dụng tự động hóa cho các hành động trang web chung..

Khởi chạy ứng dụng web ..

Nhập tên người dùng vào trường tên người dùng ..

Nhập mật khẩu vào trường Mật khẩu ..

Nhấp vào nút Đăng nhập ..

Điều hướng đến phần báo cáo ..

Nhập ngày hiện tại trong trường Ngày ..

Chờ kết quả của tất cả các báo cáo để hiển thị ..

Python có thể được sử dụng để tự động hóa không?

Python thường được sử dụng tại nơi làm việc để tự động hóa và lên lịch gửi/nhận email và văn bản. Gói Python - Email, Smtplib, được sử dụng để gửi email chỉ bằng Python. Bạn có thể biến một nhiệm vụ tốn thời gian thành một tác vụ tự động/theo lịch trình.. Python packages – email, smtplib, are used for sending emails using just Python. You can turn a time-consuming task into an automated/scheduled task.

Làm cách nào để tự động hóa dữ liệu trực tiếp vào trang web của tôi bằng Python?

Cách tự động hóa dữ liệu trực tiếp đến trang web của bạn với Python..

Web cào bằng selen bằng dịch vụ đám mây ..

Chuyển đổi dữ liệu đã tải xuống trong a. một phần tập tin đến. Tệp XLSX ..

Tải lại trang web của bạn bằng gói OS Python ..

Lên lịch một kịch bản Python để chạy mỗi ngày ở Pythonanywhere ..

Bài Viết Liên Quan

Chủ Đề