refactor(scraper): convert input-value extractions to helper

This commit is contained in:
yiekheng 2026-05-02 17:54:58 +08:00
parent b7bc534681
commit 698e5bf22a
2 changed files with 41 additions and 9 deletions

View File

@ -390,7 +390,11 @@ class CM_BOT:
headers=self.get_register_form_headers
)
soup = BeautifulSoup(response.content, 'html.parser')
return soup.find('input', {'name' : "token"})['value']
return self._find_input_value(
soup, "token",
context="register_form_token",
raw=response.content,
)
except requests.exceptions.RequestException as e:
print(f"Error getting register form: {e}")
return None
@ -399,7 +403,11 @@ class CM_BOT:
def get_security_pin_form_token(self):
response = self.session.get(f'{self.base_url}/cm/setSecurityPin')
soup = BeautifulSoup(response.content, 'html.parser')
return soup.find('input', {'name' : "token"})['value']
return self._find_input_value(
soup, "token",
context="security_pin_form_token",
raw=response.content,
)
def register_user(self, user_id, user_password):
try:
@ -474,17 +482,29 @@ class CM_BOT:
headers=self.transfer_search_headers
)
soup = BeautifulSoup(response.content, 'html.parser')
name = soup.find('input', {'id': "name"})['value']
token = soup.find('input', {'name': "token"})['value']
toUserId = soup.find('input', {'id': "toUserId"})['value']
name = self._find_input_value(
soup, "name",
context="transfer_search_name",
raw=response.content,
by="id",
)
token = self._find_input_value(
soup, "token",
context="transfer_search_token",
raw=response.content,
)
toUserId = self._find_input_value(
soup, "toUserId",
context="transfer_search_toUserId",
raw=response.content,
by="id",
)
transfer_data = self.get_transfer_data(token, t_username, name, toUserId, amount, t_password)
response = self.session.post(
f'{self.base_url}/cm/saveTransfer',
data=transfer_data,
headers=self.transfer_credit_headers
)
# with open('transfer_credit.html', 'wb') as f:
# f.write(response.content)
return True if re.search(r'Successfully saved the record\.', response.text) else False
def get_user_credit(self):
@ -505,7 +525,11 @@ class CM_BOT:
def get_transfer_token(self):
response = self.session.get(f'{self.base_url}/cm/transfer')
soup = BeautifulSoup(response.content, 'html.parser')
return soup.find('input', {'name' : "token"})['value']
return self._find_input_value(
soup, "token",
context="transfer_token",
raw=response.content,
)
def logout(self):
"""Logout from the system."""

View File

@ -114,6 +114,14 @@ class ScraperHelpersTests(unittest.TestCase):
"happy path should not create the failure dir",
)
def test_find_input_value_supports_by_id(self):
html = '<form><input id="toUserId" value="42"></form>'
soup = BeautifulSoup(html, "html.parser")
result = self.bot._find_input_value(
soup, "toUserId", context="by_id", raw=html.encode(), by="id",
)
self.assertEqual(result, "42")
if __name__ == "__main__":
unittest.main()