csdn自動關注,就能搞到兩千,
不是通過決議html,通過抓介面進行關注,
MySQL存入用戶資訊到資料庫,
一、


二、代碼
import time
import pymysql # pymysql資料庫
from fake_useragent import UserAgent
import requests as request # 網路請求request
import json
userName = "" # 設定自己用戶名稱
token = "" # 查看網頁中cookies中的token
class CsdnSpider(object):
def __init__(self):
global userName
global token
self.cookices = {
"UserName": userName, # 設定自己用戶名稱
"UserToken": token, # 設定登錄token
}
self.us = UserAgent()
self.head = {
"User-Agent": self.us.random,
}
self.seesion = request.Session()
self.url = "https://blog.csdn.net//phoenix/web/v1/follow/list?page=1&pageSize=40&blogUsername="
self.help = MysqlHelp()
def parse_html(self, name):
json_str = self.get_url(name.replace(" ", ""))
user_dic = json.loads(json_str)
data = user_dic["data"]
print(data is None)
if data is not None:
follow = data["total"]
print("關注:", follow)
if follow != 0:
for user in data["list"]:
time.sleep(0.5)
username = user["username"]
nickname = user["nickname"]
blogUrl = user["blogUrl"]
years = user["years"]
print("插入資料", nickname)
list = self.help.select_data_user(nickname)
if len(list) == 0: # 判斷資料庫中有沒有這個名字
self.help.insert_data_user(username, nickname, blogUrl, years, follow)
self.post_url(nickname)
self.parse_html(nickname)
else:
print("已經插入過:", nickname)
def get_url(self, name):
print("獲取網址:", self.url + name)
respon = self.seesion.get(url=self.url + name, headers=self.head, cookies=self.cookices)
# print("請求網址回應:" + respon.content.decode('utf-8'))
return respon.content.decode('utf-8')
def post_url(self, name):
data = {
"username": name
}
response = request.post('https://me.csdn.net/api/relation/create?source=blog', data=json.dumps(data),
cookies=self.cookices)
if response.status_code == 200:
print("關注成功")
else:
print("關注失敗狀態碼:", response.status_code)
def run(self):
self.parse_html("qq_41329275")
#連接MySql資料庫
coon = pymysql.connect(
host="127.0.0.1",
# 你的主機
user="root",
# 你的資料庫用戶名
password="root",
# 本次操作所要使用的資料庫
database="spiderdb",
charset="utf8",
)
# 獲取資料庫操作游標
cursor = coon.cursor()
class MysqlHelp(object):
#插入資料
def insert_data_user(self, username, nickname, userAvatar, years, follow):
global cursor, coon
insertSql = 'insert into csdn_user(username,nickname,blogUrl,years,follow) value (%s,%s,%s,%s,%s)'
cursor.execute(insertSql, (username, nickname, userAvatar, years, follow))
# self.cursor.executemany(sql,data) #批量添加資料
coon.commit()
lastId = cursor.lastrowid
print("lastId", lastId)
def select_data_user(self, nickname):
global cursor, coon
selectSql = 'select nickname from csdn_user where nickname=' + "'" + nickname + "'"
cursor.execute(selectSql)
list = cursor.fetchall()
print("資料庫種nickName:", list)
return list
# 關閉資料庫
def close_db(self):
cursor.close()
coon.close()
if __name__ == '__main__':
spider = CsdnSpider()
spider.run()
用戶名和token查看,登錄成功找個介面查看,

三、總結
- 學習安裝Mysql,
- sql陳述句復習,
- 介面引數邏輯決議,發送json資料,
- seesion登錄資訊保存,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/265393.html
標籤:python
上一篇:Pycharm初步上手
