refactor(scraper): convert input-value extractions to helper
This commit is contained in:
parent
b7bc534681
commit
698e5bf22a
@ -390,7 +390,11 @@ class CM_BOT:
|
|||||||
headers=self.get_register_form_headers
|
headers=self.get_register_form_headers
|
||||||
)
|
)
|
||||||
soup = BeautifulSoup(response.content, 'html.parser')
|
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:
|
except requests.exceptions.RequestException as e:
|
||||||
print(f"Error getting register form: {e}")
|
print(f"Error getting register form: {e}")
|
||||||
return None
|
return None
|
||||||
@ -399,7 +403,11 @@ class CM_BOT:
|
|||||||
def get_security_pin_form_token(self):
|
def get_security_pin_form_token(self):
|
||||||
response = self.session.get(f'{self.base_url}/cm/setSecurityPin')
|
response = self.session.get(f'{self.base_url}/cm/setSecurityPin')
|
||||||
soup = BeautifulSoup(response.content, 'html.parser')
|
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):
|
def register_user(self, user_id, user_password):
|
||||||
try:
|
try:
|
||||||
@ -474,17 +482,29 @@ class CM_BOT:
|
|||||||
headers=self.transfer_search_headers
|
headers=self.transfer_search_headers
|
||||||
)
|
)
|
||||||
soup = BeautifulSoup(response.content, 'html.parser')
|
soup = BeautifulSoup(response.content, 'html.parser')
|
||||||
name = soup.find('input', {'id': "name"})['value']
|
name = self._find_input_value(
|
||||||
token = soup.find('input', {'name': "token"})['value']
|
soup, "name",
|
||||||
toUserId = soup.find('input', {'id': "toUserId"})['value']
|
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)
|
transfer_data = self.get_transfer_data(token, t_username, name, toUserId, amount, t_password)
|
||||||
response = self.session.post(
|
response = self.session.post(
|
||||||
f'{self.base_url}/cm/saveTransfer',
|
f'{self.base_url}/cm/saveTransfer',
|
||||||
data=transfer_data,
|
data=transfer_data,
|
||||||
headers=self.transfer_credit_headers
|
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
|
return True if re.search(r'Successfully saved the record\.', response.text) else False
|
||||||
|
|
||||||
def get_user_credit(self):
|
def get_user_credit(self):
|
||||||
@ -505,7 +525,11 @@ class CM_BOT:
|
|||||||
def get_transfer_token(self):
|
def get_transfer_token(self):
|
||||||
response = self.session.get(f'{self.base_url}/cm/transfer')
|
response = self.session.get(f'{self.base_url}/cm/transfer')
|
||||||
soup = BeautifulSoup(response.content, 'html.parser')
|
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):
|
def logout(self):
|
||||||
"""Logout from the system."""
|
"""Logout from the system."""
|
||||||
|
|||||||
@ -114,6 +114,14 @@ class ScraperHelpersTests(unittest.TestCase):
|
|||||||
"happy path should not create the failure dir",
|
"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__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user