Python 파충류 용 Xpath 키 태그 획득 자동 댓 글 빌딩 추첨 실현(2)
9822 단어 Python자동 으로 빌딩 을 짓다.추첨 하 다
이전 글 에서 길 을 가리키다
일반적으로 우 리 는 특정한 사이트 의 빌딩 짓 기 추첨 활동 에 참가 하 는데 한 가지 만 참가 하 는 것 이 아니 라 여러 개의 빌딩 짓 기 활동 과 함께 참가한다.
이때 우 리 는 댓 글 의 링크 가 서로 다른 댓 글 을 어떻게 구분 하여 댓 글 을 달 았 는 지 분석 해 야 한다.예 를 들 어 위의 댓 글 링크 와 같은 구체 적 인 형식 은 다음 과 같다.
https://club.hihonor.com/cn/forum.php?mod=post&action=reply&fid=154&tid=21089001&extra=page%3D1&replysubmit=yes&infloat=yes&handlekey=fastpost&inajax=1
이 안 에는 서로 다른 게시 물 을 구분 하 는 키 가 tid 입 니 다.블 로그 댓 글 의 링크 를 보 실 수 있 습 니 다.똑 같이 21089001 의 숫자 가 있 는 지 확인 하 실 수 있 습 니 다.블 로 거들 의 테스트 를 통 해 이 사이트 댓 글 post 는 사이트 주 소 를 tid 를 제외 하고 다른 데 이 터 는 똑 같 아서 변경 할 필요 가 없다.그래서 우 리 는 새 댓 글 을 바 꿀 때 tid 의 값 만 바 꾸 면 된다.
2.절 분 추출 tid
독자 들 은 이 사이트 의 게시 물 을 마음대로 열 수 있 습 니 다.우 리 는 보통 다음 과 같은 형식의 문자열 게시 물 링크 를 얻 을 수 있 습 니 다.
https://club.hihonor.com/cn/thread-26194745-1-1.html
링크 문자열 의 긴 숫자 문자열 26194745 를 얻 기 위해 서 는 문자열 절단 지식 이 필요 합 니 다.구체 적 인 코드 는 다음 과 같다.
import re
#
url_start = "https://club.hihonor.com/cn/forum.php?mod=post&action=reply&fid=4515&tid="
url_end = "&extra=page%3D1&replysubmit=yes&infloat=yes&handlekey=fastpost&inajax=1"
url = [] #
txt_url = [] # ( )
f = open(" .txt", "r", encoding='utf-8')
line = f.readline() #
while line:
if re.match(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', line):
txt_url.append(line.strip()) #
line = f.readline() #
datas = []
headers = []
for i in txt_url:
url_start = "https://club.hihonor.com/cn/forum.php?mod=post&action=reply&fid=4515&tid="
url_end = "&extra=page%3D1&replysubmit=yes&infloat=yes&handlekey=fastpost&inajax=1"
url.append(url_start + i.split("-")[1] + url_end)
여기 서 블 로 거들 은 댓 글 이 필요 한 링크 를 모두 텍스트 파일 에 넣 고 파일 을 읽 어서 모든 링크 데 이 터 를 가 져 옵 니 다(그 중에서 정규 표현 식 으로 링크 가 합 법 적 인지 판단 합 니 다).링크 를 옮 겨 다 니 며 나 누 어 댓 글 표지 의 디지털 문자열 을 얻 고 마지막 으로 맞 춤 형 으로 진정한 post 댓 글 링크 를 얻 습 니 다.
3.댓 글 의 내용 을 무 작위 로 추출 합 니 다.
많은 사이트 빌딩 짓 기 행사 에서 공식 사 이 트 는 일반적으로 내용 중복 여 부 를 검 측 하 는데 보통 같은 계 정 에서 여러 번 중복 되 는 내용 을 댓 글 하면 한동안 댓 글 이 금 지 될 것 이다.
그래서 우 리 는 댓 글 의 내용 을 다양 하 게 해 야 한다.예 를 들 어 이 사 이 트 는 핸드폰 의 성능 을 칭찬 하고 빌딩 을 짓 는 추첨 을 하 라 고 한다.그러면 우 리 는 댓 글 과 글 을 준비 하여 프로그램 이 랜 덤 으로 얻 을 수 있 도록 해 야 한다.
구체 적 인 문 자 는 txt 파일 에 놓 여 있 습 니 다.우 리 는 아래 코드 를 통 해 읽 습 니 다.
#
txt_contents = []
f = open(" .txt", "r", encoding='utf-8')
line = f.readline() #
while line:
if line.strip() != "":
txt_contents.append(line.strip()) #
line = f.readline() #
print(txt_contents)
count = len(txt_contents)
만약 에 우리 가 게임 포럼 의 빌딩 평론 활동 에 참가 해 야 한다 면 아래 의 텍스트 로 무 작위 로 평론 을 추출 할 수 있 고 샘플 이 많 을 수록 중복 성 이 적다.4.빌딩 을 짓 고 추첨 을 한다.
일반적으로 이런 자주 활동 하 는 사 이 트 는 로그 인 을 검증 해 야 한다.각 사이트 의 인증 코드 알고리즘 이 다 르 기 때문에 어떻게 자동 으로 계 정 에 로그 인 하 느 냐 가 매우 중요 하 다.
식별 인증 코드 에 대해 우 리 는 바 이 두,텐 센트,아 리 클 라 우 드 가 제공 하 는 문자 인식 인 터 페 이 스 를 사용 하거나 블 로 거들 이 테스트 를 해 봐 도 100%식별 성공 을 보장 할 수 없고 최고 식별 준비 율 도 50%가 안 된다.
만약 에 스스로 기계 학습 식별 알고리즘 을 써 야 한다 면 기계 학습 을 배 운 사람 은 모두 알 아야 한다.이것 은 엄 청 난 표지 가 필요 하 다.설령 네가 정말 만들어 낸다 하 더 라 도 남 의 사이트 가 또 검증 방식 을 바 꿀 것 이다.
이런 인증 코드 와 방지 인증 코드 는 계속 발전 하고 있 으 며 레이 블 인증 코드 를 대량으로 실현 하 는 데 많은 시간 을 낭비 하고 마지막 에 사람들 이 다시 바 꿀 수 있다.
그래서 블 로 거들 의 건 의 는 자신 이 수 동 으로 인증 코드 를 입력 하 는 것 이다.이 단계 에 인증 코드 를 수 동 으로 입력 하고 다른 것 은 모두 자동 이다.전체 코드 는 다음 과 같 습 니 다:
import random
import time
from selenium import webdriver
import requests
import re
#
txt_contents = []
f = open(" .txt", "r", encoding='utf-8')
line = f.readline() #
while line:
if line.strip() != "":
txt_contents.append(line.strip()) #
line = f.readline() #
print(txt_contents)
count = len(txt_contents)
#
url_start = "https://club.hihonor.com/cn/forum.php?mod=post&action=reply&fid=4515&tid="
url_end = "&extra=page%3D1&replysubmit=yes&infloat=yes&handlekey=fastpost&inajax=1"
url = [] #
txt_url = [] # ( )
f = open(" .txt", "r", encoding='utf-8')
line = f.readline() #
while line:
if re.match(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', line):
txt_url.append(line.strip()) #
line = f.readline() #
datas = []
headers = []
for i in txt_url:
url_start = "https://club.hihonor.com/cn/forum.php?mod=post&action=reply&fid=4515&tid="
url_end = "&extra=page%3D1&replysubmit=yes&infloat=yes&handlekey=fastpost&inajax=1"
url.append(url_start + i.split("-")[1] + url_end)
#
usernames = []
f = open(" .txt", "r", encoding='utf-8')
line = f.readline() #
while line:
usernames.append(line.strip()) #
line = f.readline() #
for name in usernames:
browser = webdriver.Chrome()
browser.implicitly_wait(10)
browser.get("https://club.hihonor.com/cn/")
time.sleep(5)
login_text = browser.find_element_by_xpath("//*[@id='loginandreg']/a[1]")
login_text.click()
username = browser.find_element_by_xpath(
'/html/body/div[1]/div[2]/div/div/div[1]/div[3]/span/div[1]/span/div[2]/div[2]/div/input')
password = browser.find_element_by_xpath(
'/html/body/div[1]/div[2]/div/div/div[1]/div[3]/span/div[1]/span/div[3]/div/div/div/input')
username.send_keys(name)
password.send_keys(" ")# , txt
sign = browser.find_element_by_xpath(
'/html/body/div[1]/div[2]/div/div/div[1]/div[3]/span/div[1]/span/div[6]/div/div/span/span')
# 10 ,
time.sleep(10)
sign.click()
time.sleep(2)
cookie = [item["name"] + "=" + item["value"] for item in browser.get_cookies()]
cookiestr = ';'.join(item for item in cookie)
url2 = "https://club.hihonor.com/cn/thread-26183971-1-1.html"
time.sleep(2)
browser.get(url2)
posttime = browser.find_element_by_id("posttime")
posttime = posttime.get_attribute("value")
formhash = browser.find_element_by_name("formhash")
formhash = formhash.get_attribute("value")
browser.close()
data = {
"formhash": formhash,
"posttime": posttime,
"usesig": "1",
"message": txt_contents[0],
}
header = {
"accept": "application/json, text/javascript, */*; q=0.01",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "zh-CN,zh;q=0.9",
"Content-Length": "146",
"sec-ch-ua": '"Google Chrome";v="87", "\"Not;A\\Brand";v="99", "Chromium";v="87"',
"User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Mobile Safari/537.36",
"Cookie": cookiestr,
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"X-Requested-With": "XMLHttpRequest",
}
datas.append(data)
headers.append(header)
while True:
z = 0
if int(time.strftime("%H%M%S")) <= 220000:
url_num = random.sample(range(0, len(url)), len(url))
for i in url_num:
j = 1
for data, header in zip(datas, headers):
data['message'] = txt_contents[random.randint(0, count - 1)]
res = requests.post(url=url[i], data=data, headers=header)
if ' ' in res.text:
print(" {0} ".format(j))
else:
print(res.text)
j += 1
z += 1
time.sleep(5)
print(" {0} ".format(str(z)))
상기 코드 에서 보 듯 이 우리 의 계 정 도 txt 파일 로 통일 적 으로 처리 하면 여러 개의 계 정 을 동시에 긁 는 목적 을 달성 할 수 있 습 니 다.물론 일반 사이트 의 수상 은 같은 IP 가 될 수 없습니다.여기 서 독 자 는 대 리 를 통 해 처리 할 수 있 습 니 다.사실 로그 인 후,어떤 댓 글 이 든 potstime 과 formhash 두 개의 값 이 있 습 니 다.무 작위 로 댓 글(url 2)을 열 면 파충류 지식 을 통 해 얻 을 수 있 습 니 다.
파 이 썬 파충류 가 Xpath 로 키 라벨 을 획득 하여 자동 댓 글 빌딩 추첨(2)을 실현 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 이 자동 빌딩 추첨 을 실현 하 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.