【loc新注册用户邀请人】爬虫脚本

v2016 2018-11-27 2488

运行前准备:
1. 创建一个mysql数据库,并且选utf8mb4编码,并修改pymysql.connect这一行的配置
2. 脚本最后面添加自己的用户名密码

  1. #-*- coding=utf-8 -*-
  2. import requests
  3. import re
  4. import pymysql
  5. import sys

  6. db=pymysql.connect('127.0.0.1','loc_reg','passwd','loc_reg',charset='utf8mb4')
  7. cur=db.cursor()
  8. db.ping()
  9. try:
  10.     sql="""
  11.     create table if not exists loc_reg_relation(
  12.     uid bigint
  13.     ,username varchar(64)
  14.     ,regtime varchar(64)
  15.     ,puid bigint
  16.     ,pusername varchar(64)
  17.     );
  18.     """
  19.     cur.execute(sql)
  20.     db.commit()
  21. except Exception as e:
  22.     print(e)
  23.     sys.exit(0)

  24. home='https://www.hostloc.com'
  25. forum_home=home+'/forum.php?mod=forumdisplay&fid=45&orderby=dateline&filter=author&orderby=dateline&page={}'
  26. login_url=home+'/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1'

  27. login_data={
  28.         'fastloginfield':'username'
  29.         ,'username':''
  30.         ,'cookietime':'2592000'
  31.         ,'password':''
  32.         ,'quickforward':'yes'
  33.         ,'handlekey':'ls'
  34.     }

  35. headers={
  36.     'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
  37.     ,'Accept-Encoding':'gzip, deflate, sdch'
  38.     ,'Accept-Language':'zh-CN,zh;q=0.8,en;q=0.6'
  39.     ,'Host':'www.hostloc.com'
  40.     ,'Referer':'https://www.hostloc.com/forum.php'
  41.     ,'Upgrade-Insecure-Requests':'1'
  42.     ,'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'
  43. }

  44. class HostLoc():
  45.     def __init__(self,username,passwd):
  46.         self.username=username
  47.         self.passwd=passwd
  48.         self.session=requests.Session()
  49.         self.session.headers=headers
  50.         login_data['username']=username
  51.         login_data['password']=passwd
  52.         login_data['formhash']=self.get_hidden_value(home,'formhash')
  53.         self.login()

  54.     def login(self):
  55.         self.session.post(login_url,data=login_data,verify=False)

  56.     def isLogin(self):
  57.         url='https://www.hostloc.com/home.php?mod=spacecp'
  58.         html=self.session.get(url).text
  59.         UserName=re.findall(self.username,html)
  60.         if len(UserName)==0:
  61.             return False
  62.         else:
  63.             return True

  64.     def get_hidden_value(self,url,keyname):
  65.         r=self.session.get(url)
  66.         cont=r.text
  67.         value=re.findall('<input type="hidden" name="{}" value="(.*?)" />'.format(keyname),cont)[0]
  68.         return value

  69.     def GetNewUser(self):
  70.         r=self.session.get(home)
  71.         space,username=re.findall(u'</span>欢迎新会员: <em><a href="(space-username-.*?\.html)" target="_blank" class="xi2">(.*?)</a></em></p',r.text)[0]
  72.         space_url=home+'/'+space
  73.         if not self.exists(username):
  74.             uid,puid,pusername,regtime=self.GetUserInfo(space_url)
  75.             print('get new register user:{},register time:{};invited by {}'.format(uid,regtime,pusername))
  76.             sql='insert into loc_reg_relation(`uid`,`username`,`regtime`,`puid`,`pusername`) values(%s,%s,%s,%s,%s)'
  77.             cur.execute(sql,(uid,username,regtime,puid,pusername))
  78.             db.commit()

  79.     def exists(self,username):
  80.         sql="select count(1) from loc_reg_relation where `username`=%s;"
  81.         cur.execute(sql,(username,))
  82.         num=int(cur.fetchone()[0])
  83.         return num>0

  84.     def GetUserInfo(self,space_url):
  85.         r=self.session.get(space_url)
  86.         uid=re.findall('<a id="domainurl" ',r.text)[0]
  87.         friend_url='https://www.hostloc.com/home.php?mod=space&uid={}&do=friend&view=me&from=space'.format(uid)
  88.         r2=self.session.get(friend_url)
  89.         try:
  90.             puid,pusername=re.findall('<a href="space-uid-(\d+)\.html">(.*?)</a><span id="friend_note_\d+" class="note xw0" title=""></span>',r2.text)[0]
  91.         except:
  92.             puid,pusername=0,'已删除好友'
  93.         profile_url='https://www.hostloc.com/home.php?mod=space&uid={}&do=profile'.format(uid)
  94.         r3=self.session.get(profile_url)
  95.         regtime=re.findall(u'<em>注册时间</em>([\d\- :]*?)</li>',r3.text)[0]
  96.         return uid,puid,pusername,regtime


  97. if __name__=="__main__":
  98.     username=''
  99.     password=''
  100.     loc=HostLoc(username,password)
  101.     loc.GetNewUser()





转自hostloc论坛

最新回复 (5)
  • C 2018-11-28
    2
    我都是自己邀请自己,邀请完秒删好友,他这执行间隔估计不够。
  • 慕容 2018-12-1
    3
    二位大佬是否能邀请我成为hostloc的会员?想去玩玩
    心在舞鹤的宿毛湾提督
  • C 2018-12-1
    4
    591442386 二位大佬是否能邀请我成为hostloc的会员?想去玩玩
    我积分还不够邀请的,LOC水深,慎入坑……
  • v2016 2018-12-1
    5
    591442386 二位大佬是否能邀请我成为hostloc的会员?想去玩玩
    加我qq 87720278 我拿我的元老大号给你
  • 慕容 2018-12-2
    6
    v2016 加我qq 87720278 我拿我的元老大号给你
    好,感谢
    心在舞鹤的宿毛湾提督
返回
发新帖