
文章目錄
- 評論區抽獎程式
- 1. 思路
- 2. 準備
- 3. 實作爬蟲爬取資料
- 4. 亂數模塊抽取
- 5. main函式
- 6. 大功告成
評論區抽獎程式
這個小程式很簡陋,沒什么難度
1. 思路
- 使用爬蟲爬取評論區資料
- 隨機抽取一名幸運用戶
思路很簡單,實作也很簡單
2. 準備
- 新建一個py檔案,命名為
talkprize.py - 匯入相關模塊
requests
import random
import requests
import json
import jsonpath
3. 實作爬蟲爬取資料
先打開送書文章鏈接:https://blog.csdn.net/m0_52883898/article/details/120535359
右鍵檢查,先拿到請求頭和cookie,然后存入head字典中
head = {
"user-agent": "xxxx",
"Cookie": "xxx"
}
# 將url存入變數url
url = 'https://blog.csdn.net/m0_52883898/article/details/120535359'
然后放入get方法,輸出文本,看看原始碼
print(requests.get(url=url, headers=head).text)
在控制臺會輸出原始碼,回到瀏覽器界面的檢查界面,點擊檢查界面的左上角的小手,點擊到左邊的評論區界面,找到一個屬性,在原始碼界面使用組合鍵ctrl+f搜索,發現搜索不到
說明評論區不在本頁面的HTML代碼中,轉換思路,查找json資料,找到了評論區介面

點開查看url:

發現了一個page引數,這個引數是代表幾頁,不要問為什么,這是經驗,
回到評論區,你會發現我們的評論區是分了好幾頁的,所以我們就不使用爬蟲爬這個頁數了,雖然這很帥~~
然后我們定一個獲取評論資料的函式
def get_name(head, num):
"""總共幾頁回圈幾次"""
ans = [] # 回傳值
for i in range(num):
url = "https://blog.csdn.net/phoenix/web/v1/comment/list/120535359?page=%d&size=10&comment_id=" % (i+1)
get_html = requests.post(url, headers=head).content # 獲取評論區資料
json_data = json.loads(get_html) # 轉為python資料
name_li = jsonpath.jsonpath(json_data, '$..nickName')
ans += name_li
return ans
我們直接使用格式化字串拼接這個引數,設定三次回圈獲取全部評論區資料
獲取完資料使用json模塊轉為python資料型別,然后使用jsonpath提取評論名字
$..nickName
從根節點的所有節點獲取所有nicjName屬性的資料
并將資料添加進一個ans,將其回傳
4. 亂數模塊抽取
定義一個函式實作隨機抽取一個評論用戶,需要使用亂數模塊的randit方法
def chou_jiang(li):
"""
亂數函式抽獎
引數為評論用戶的用戶名
:param li:
:return: None
"""
i = len(li)
j = random.randint(0, i-1)
return li[j]
然后就OK了
5. main函式
在main函式中設定幾個變數,分別為:
- head —— 存盤cookie和請求頭
- name_list —— 所有評論用戶串列
- user —— 獲獎名單
if __name__ == '__main__':
head = {
"user-agent": "你自己的請求頭",
"Cookie": "你自己的cookie"
}
name_list = get_name(head, 3)
prize_user = chou_jiang(name_list)
print("獲獎者是:", prize_user)
6. 大功告成
右鍵運行你的程式,就大功告成啦~~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/304941.html
標籤:python
