我遇到了麻烦,因为我尝试过的一切都不起作用。我尝试过使用 python 请求。不幸的是,这不起作用,因为表单在网页后 1 秒左右加载,使得发布请求不可能。无奈之下,我改用了硒。但是,我无法通过 xpath、id 或 class 来定位元素,因为每次加载网页时它们都是动态加载和随机化的。还有其他办法可以报名吗?
请求:尝试传递发布请求时。失败是因为页面/表单尚未加载(请参阅标题中的 URL)
m = {}
m["fullName"] = "test"
requests.post(url, data=m)
Selenium 尝试:不起作用,因为 ids/类名/等每次都是随机的。
email_field = driver.find_element_by_id("f2e3acfde5540d")
name_field = driver.find_element_by_id("f15a1d5523914b")
username_field = driver.find_element_by_id("ff9c874585158")
password_field = driver.find_element_by_id("f233cff115218c8")
ssh root@your_server_ip wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb wget sftp://root@localhost/root/Instagram-Follower-Bot/google-chrome-stable_current_amd64.deb scp root@localhost:/root/Instagram-Follower-Bot/google-chrome-stable_current_amd64.deb 。 sudo dpkg -i google-chrome-stable_current_amd64.deb sudo apt-get install -f 谷歌浏览器--版本
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import time
def open_instagram_signup():
# Setup ChromeDriver
driver = webdriver.Chrome(ChromeDriverManager().install())
try:
# Navigate to the Instagram signup page
driver.get('https://www.instagram.com/accounts/emailsignup/')
# Wait for some time to visually confirm navigation
time.sleep(10)
finally:
driver.quit()
if __name__ == "__main__":
open_instagram_signup()
这里是一个示例,如何使用 xpath 选择器通过 Selenium 登录/注册 instagram。我用硒包装器 Elementium 编写了这个代码,以减少代码。但是,您可以在代码中使用相同的选择器。
from elementium.drivers.se import SeElements
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.instagram.com/accounts/login/?hl=en')
se = SeElements(browser)
se.xpath('//input[@name="username"]', wait=True, ttl=2).clear().write('username')
se.xpath('//input[@type="password"]', wait=True, ttl=2).clear().write('password')
se.xpath('//button[contains(text(), "Log in")]', wait=True, ttl=2).click()
assert se.xpath('//a[text()="Profile"]', wait=True, ttl=2), 'User was not logged in.'
与注册相同:
browser.get('https://www.instagram.com/?hl=en')
se = SeElements(browser)
se.xpath('//input[@name="emailOrPhone"]', wait=True, ttl=2).clear().write('366656')
se.xpath('//input[@name="fullName"]', wait=True, ttl=2).clear().write('Alex')
se.xpath('//input[@name="username"]', wait=True, ttl=2).clear().write('Alex')
se.xpath('//input[@name="password"]', wait=True, ttl=2).clear().write('password')
se.xpath('//button[contains(text(), "Sign up")]', wait=True, ttl=2).click()