1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
import time
import execjs import requests import json from loguru import logger import pymongo
def cur_data(data): headers = { "Accept": "application/json, text/plain, */*", "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", "Cache-Control": "no-cache", "Connection": "keep-alive", "Content-Type": "application/json", "Origin": "https://wuhan.hbdzcg.com.cn", "Pragma": "no-cache", "Referer": "https://wuhan.hbdzcg.com.cn/", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36", "nonceStr": "553609.1504313218", "sec-ch-ua": "\"Not(A:Brand\";v=\"99\", \"Google Chrome\";v=\"133\", \"Chromium\";v=\"133\"", "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": "\"Windows\"", "signature": "0aa870538cb538b0f6024c11e839cac4", "timestamp": "1740211944128" } url = "https://wuhan.hbdzcg.com.cn/e-business/act/purchaseAnnouncement/listPage" res = execjs.compile(open("1-4.武汉电子商城(用Crypto标准库).js", "r", encoding="utf-8").read()).call("get_s_t", json.dumps(data))
headers['signature'] = res['signature'] headers['timestamp'] = res['timestamp'] headers['nonceStr'] = res['nonceStr'] request = requests.post(url, headers=headers, json=data) print(request) json_response = request.json() return json_response
if __name__ == '__main__': client = pymongo.MongoClient() collection = client['py_spider']['WuHanDianZi2']
for page in range(1, 11): data = { "page": page, "pageSize": 10, "unitId": 1, "announcementTitle": "", "announcementState": "", "announcementType": "1" } json_response = cur_data(data)
try: for one in json_response['body']['data']['list']: item = dict() item['announcementId'] = one["announcementId"] item['projectId'] = one["projectId"] item['projectCode'] = one["projectCode"] item['announcementTitle'] = one["announcementTitle"] item['createdTime'] = one["createdTime"] item['bidTime'] = one["bidTime"] logger.info(f"数据{item}插入中") try: collection.insert_one(item) logger.info("数据插入成功:", ) except Exception as e: logger.error("数据插入失败:", e) except Exception as e: logger.error("json解析可能存在问题: ", e) print(json_response) time.sleep(30)
|