吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1668|回复: 9
收起左侧

[Python 转载] 书接上文,利用csv包来帮助全班的小伙伴进行“签到”

[复制链接]
hj170520 发表于 2020-5-5 12:52
本帖最后由 hj170520 于 2020-5-11 16:29 编辑

书接上文,https://www.52pojie.cn/thread-1171669-1-1.html
原始话题:https://www.52pojie.cn/thread-1171440-1-1.html

班上经常有粗心的同学,不老实签到,一直被班委提醒,现在我在原来的基础上增添了用csv包完成全班的自动签到,再也不担心没签到成功了!
[Python] 纯文本查看 复制代码
import csv
import json
import requests

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1.2 Safari/605.1.15'
}

url_MD5 = "********************"
url_info = "********************"
url_submit = '********************t'

csvFile = open("cardId.csv", "r")
rows = csv.DictReader(csvFile)
cardId = []
for row in rows:
    cardId.append(row["cardId"])

for i in range (len(cardId)):
    cardId_x = cardId[i]
    my_data = {"cardId": cardId_x}
    res_MD5 = requests.post(url_MD5, headers = headers, data = my_data).text
    res_MD_dict = json.loads(res_MD5)
    MD5 = res_MD_dict["data"]
    my_data["md5"] = MD5
    res_info = requests.post(url_info, headers = headers, data = my_data).text
    res_info_dict = json.loads(res_info)
    list = res_info_dict["data"]["list"]
    list_dict = dict(list[0])
    data_submit = {}
    data_submit["bh"] = list_dict["bh"]
    data_submit["xykh"] = list_dict["xykh"]
    data_submit["twfw"] = list_dict["twfw"]
    data_submit["sfzx"] = list_dict["sfzx"]
    data_submit["sfgl"] = list_dict["sfgl"]
    data_submit["szsf"] = list_dict["szsf"]
    data_submit["szds"] = list_dict["szds"]
    data_submit["szxq"] = list_dict["szxq"]
    data_submit["sfcg"] = list_dict["sfcg"]
    data_submit["bllb"] = list_dict["bllb"]
    data_submit["sfjctr"] = list_dict["sfjctr"]
    data_submit["zcwd"] = list_dict["zcwd"]
    data_submit["zwwd"] = list_dict["zwwd"]
    data_submit["wswd"] = list_dict["wswd"]
    data_submit["sbr"] = list_dict["sbr"]
    data_submit["sjd"] = res_info_dict["data"]["sjd"]
    print("可爱的'" + list_dict["xm"] + "'同学正在签到")
    res_submit = requests.post(url_submit, headers=headers, data=data_submit).text
    if json.loads(res_submit)["message"] == "成功":
        print("签到成功")
    else:
        print("签到失败")


有朋友说“动态参数,我还是新手,不太理解也就没有改。但是
[Python] 纯文本查看 复制代码
requests.post(url_MD5, headers = headers, data = my_data).text

这个部分我改了,!我接下来想做爬虫了,有个etree函数没搞明白,希望更多的大佬能指点指点我


一会“赶火车”回学校了,我会想你们的。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| hj170520 发表于 2020-5-5 12:54
cardId.csv
数据文件不方便上传
模式差不多是
[SQL] 纯文本查看 复制代码
cardId
320****x
320****y
...
lntuer 发表于 2020-5-5 14:24
一、etree不叫函数哦,他是是lxml 模块里面的,本质是一个类,网上:1.解析HTML:使用 etree.HTML(text) 将字符串格式的 html 片段解析成 html 文档2.读取xml文件3.etree和XPath 配合使用
二、爬虫提取信息有BeautifulSoup库,俗称美丽汤
三、建议好好学习正则,学会正则怕遍天下也不怕
 楼主| hj170520 发表于 2020-5-5 14:44
lntuer 发表于 2020-5-5 14:24
一、etree不叫函数哦,他是是lxml 模块里面的,本质是一个类,网上:1.解析HTML:使用 etree.HT ...

谢谢大佬!长知识了
正则好像很难的样子,还没学就吓死不少人了
lntuer 发表于 2020-5-5 14:52
hj170520 发表于 2020-5-5 14:44
谢谢大佬!长知识了
正则好像很难的样子,还没学就吓死不少人了

day day study,day day up!日益精进
 楼主| hj170520 发表于 2020-5-5 15:01
lntuer 发表于 2020-5-5 14:52
day day study,day day up!日益精进

是的,我一定要加油!
ciker_li 发表于 2020-5-5 21:53
rows = csv.DictReader(csvFile)
cardId = []
for row in rows:
    cardId.append(row["cardId"])

for i in range (len(cardId)):
    cardId_x = cardId[i]

这部分是不是有点重复?
下面也没有用到i
for row in rows:这个循环是不是就够了
 楼主| hj170520 发表于 2020-5-5 22:03
ciker_li 发表于 2020-5-5 21:53
rows = csv.DictReader(csvFile)
cardId = []
for row in rows:

我印象里我做到这一步的时候,我发现rows里的数据因为是dict形式无法直接用。所以我把dict文件数据拿出来转成了list数据。我也不知道该怎么简化,还希望您斧正!
ciker_li 发表于 2020-5-6 09:27
hj170520 发表于 2020-5-5 22:03
我印象里我做到这一步的时候,我发现rows里的数据因为是dict形式无法直接用。所以我把dict文件数据拿出来 ...

for row in rows:
    my_data = {"cardId": row["cardId"]}
这样能行吗?
 楼主| hj170520 发表于 2020-5-6 21:27
ciker_li 发表于 2020-5-6 09:27
for row in rows:
    my_data = {"cardId": row["cardId"]}
这样能行吗?

我刚下火车。可以的,果然是大佬。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 07:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表