这是我想要的网站:https://tweeterid.com/
这是我目前以函数
的形式所做的from bs4 import BeautifulSoup as bs
from selenium import webdriver
def getTwitterID(name):
options = webdriver.ChromeOptions()
options.add_argument('--no-sandbox')
options.add_argument('start-maximized')
options.add_argument('enable-automation')
options.add_argument('--disable-infobars')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--disable-browser-side-navigation')
options.add_argument("--remote-debugging-port=9222")
# options.add_argument("--headless")
options.add_argument('--disable-gpu')
options.add_argument("--log-level=3")
driver = webdriver.Chrome('chromedriver', options=options)
driver.maximize_window()
driver.get("https://tweeterid.com/")
driver.refresh()
driver.find_element("id","twitter").send_keys(name)
driver.find_element("id","twitterButton").click()
WebDriverWait(driver, 10)
html = driver.page_source
soup = bs(html)
id = soup.select_one('div[class*="output"]')
return id.text
名称参数包含处理名称的Twitter。我想要的是显示在右侧较大框上的输出结果,但是,当我运行代码时……我得到的只是"在上面的左边输入一个Twitter ID或@handle,它将被转换为"当您没有发送表单时,这是默认文本。
我该如何解决这个问题?
要获取id,只需编写一个简单的请求即可。在其主体中传递用户名
import requests
def get_converted_tweeter_id(handle):
url = "https://tweeterid.com/ajax.php"
payload = f"input={handle}"
headers = {
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
response = requests.request("POST", url, headers=headers, data=payload)
return response.text
print('@elonmusk->', get_converted_tweeter_id('@elonmusk'))
print('elonmusk->', get_converted_tweeter_id('elonmusk'))
print('eminem->', get_converted_tweeter_id('eminem'))
输出:
@elonmusk-> 44196397
elonmusk-> 44196397
eminem-> 22940219
根据您采取的方法,
使用下面的xpath获取文本内容-
//div[@id='outputSection']/div[@id='output']