hj170520 发表于 2020-5-5 12:52

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

本帖最后由 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包完成全班的自动签到,再也不担心没签到成功了!
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
    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)
    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("签到失败")

有朋友说“动态参数”{:301_999:},我还是新手,不太理解也就没有改。但是requests.post(url_MD5, headers = headers, data = my_data).text
这个部分我改了,!我接下来想做爬虫了,有个etree函数没搞明白,希望更多的大佬能指点指点我


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

hj170520 发表于 2020-5-5 12:54

cardId.csv
数据文件不方便上传
模式差不多是
cardId
320****x
320****y
...

lntuer 发表于 2020-5-5 14:24

一、etree不叫函数哦{:301_971:},他是是lxml 模块里面的,本质是一个类,网上:1.解析HTML:使用 etree.HTML(text) 将字符串格式的 html 片段解析成 html 文档2.读取xml文件3.etree和XPath 配合使用
二、爬虫提取信息有BeautifulSoup库,俗称美丽汤{:301_998:},
三、建议好好学习正则,学会正则怕遍天下也不怕{:301_988:}

hj170520 发表于 2020-5-5 14:44

lntuer 发表于 2020-5-5 14:24
一、etree不叫函数哦,他是是lxml 模块里面的,本质是一个类,网上:1.解析HTML:使用 etree.HT ...

{:301_976:} 谢谢大佬!长知识了
正则好像很难的样子,还没学就吓死不少人了{:301_991:}

lntuer 发表于 2020-5-5 14:52

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

day day study,day day up!日益精进{:301_998:}

hj170520 发表于 2020-5-5 15:01

lntuer 发表于 2020-5-5 14:52
day day study,day day up!日益精进

{:301_1001:}是的,我一定要加油!

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
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"]}
这样能行吗?
我刚下火车。可以的,果然是大佬。{:301_993:}
页: [1]
查看完整版本: 书接上文,利用csv包来帮助全班的小伙伴进行“签到”