最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

研招網(wǎng)爬蟲信息爬取

2023-09-15 19:11 作者:糖醋_小趴菜版  | 我要投稿

代碼來自知乎: https://zhuanlan.zhihu.com/p/541811879?

import pandas as pd
import requests as rqs
from lxml import html
import json
'''
以下就可以就可以解決from lxml import etree 不能用的方法

'''
etree = html.etree

# 請求頭
headers = {
? ?"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
}
getSs = 'https://yz.chsi.com.cn/zsml/pages/getSs.jsp'
getMl = 'https://yz.chsi.com.cn/zsml/pages/getMl.jsp'


shenggfen = rqs.get(getSs, headers=headers).content.decode("utf-8")
getMl = rqs.get(getMl, headers=headers).content.decode("utf-8")


formatted_getMl = []
for item in json.loads(getMl):
? ?formatted_item = f"{item['mc']}({item['dm']})"
? ?formatted_getMl.append(formatted_item)

print(formatted_getMl)
mldm = input('請選擇(學術(shù)學位)門類(數(shù)字)_(專業(yè)學位)zyxw:')

print('________________________________________')
if mldm=='q':
? ?getZy = f'https://yz.chsi.com.cn/zsml/pages/getZy.jsp?'
else:
? ?getZy = f'https://yz.chsi.com.cn/zsml/pages/getZy.jsp?mldm={mldm}'

getZy = rqs.get(getZy, headers=headers).content.decode("utf-8")

formatted_getZy = []
for item in json.loads(getZy):
? ?formatted_item = f"{item['mc']}({item['dm']})"
? ?formatted_getZy.append(formatted_item)
print(formatted_getZy)
yjxkdm = input('請選擇(學術(shù)學位)學科類別_(專業(yè)學位)專業(yè)領(lǐng)域代碼(數(shù)字)_必選:')

print('________________________________________')
# 專業(yè)
zymc = f'https://yz.chsi.com.cn/zsml/code/zy.do?q={yjxkdm}'


print(rqs.get(zymc, headers=headers).content.decode("utf-8"))
zymc = input('請選擇專業(yè)名稱(漢字):')

ssdm = input('請選擇省份(漢字):')
dwmc = input('請選擇學校名稱(漢字):')


print('________________________________________')

# 查省份代碼
def find_dm_by_mc(data, mc):
? ?for item in json.loads(data):
? ? ? ?if item["mc"] == mc:
? ? ? ? ? ?return item["dm"]
? ?return ""
ssdm = find_dm_by_mc(shenggfen, ssdm)


if ssdm=='q':
? ?ssdm = ''

if dwmc=='q':
? ?dwmc = ''

if mldm=='q':
? ?mldm = ''

if not yjxkdm:
? ?yjxkdm = ''

if zymc=='q':
? ?zymc = ''

params = {
? ?"ssdm": ssdm, ?# 省份代碼
? ?"dwmc": dwmc, ?# 學校名稱
? ?"mldm": mldm, ?# 學術(shù)學位 或 專業(yè)學位 的拼音縮寫
? ?"mlmc": "", ?#
? ?"yjxkdm": yjxkdm, ?# 專業(yè)領(lǐng)域代碼_學科類別_
? ?"zymc": zymc, ?# 專業(yè)名稱
? ?"xxfs": 1, ?# 1 全日制, 2 非全日制
? ?"pageno": 1
}

# 爬取url模板
url = """https://yz.chsi.com.cn/zsml/queryAction.do?ssdm={ssdm}&dwmc={dwmc}&mldm={mldm}&mlmc={mlmc}&yjxkdm={yjxkdm}&zymc={zymc}&xxfs={xxfs}&pageno={pageno}"""

# 請求頭
headers = {
? ?"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
}

# 儲存數(shù)據(jù)的列表
table = []


def getSearchData(params: dict):
? ?"""
? ?爬取需要的頁面信息,僅為了方便爬取某個頁面
? ?@params: 填入url模板的參數(shù)字典
? ?@return: 解碼后的html字符串
? ?"""
? ?return rqs.get(url.format(**params), headers=headers).content.decode("utf-8")


def getARecored(url, schoolInfo: dict):
? ?"""
? ?儲存一條記錄的信息
? ?@url: ? ? ? “詳細頁面”的url
? ?@schoolInfo: 傳入學校信息,用于存儲(因為在詳細頁面沒有學校信息,需要從第一個頁面?zhèn)魅耄?br> ? ?"""
? ?data_xpath = etree.HTML(rqs.get("https://yz.chsi.com.cn" + url, headers=headers).content.decode("utf-8"))
? ?table.append({
? ? ? ?"學校": data_xpath.xpath("//table/tbody/tr[1]/td[2]/text()")[0],
? ? ? ?"研究生院": schoolInfo["gso"],
? ? ? ?"自主劃線": schoolInfo["ao"],
? ? ? ?"博士點": schoolInfo["phd"],
? ? ? ?"考試方式": data_xpath.xpath("//table/tbody/tr[1]/td[4]/text()")[0],
? ? ? ?"院系所": data_xpath.xpath("//table/tbody/tr[2]/td[2]/text()")[0],
? ? ? ?"專業(yè)": data_xpath.xpath("//table/tbody/tr[2]/td[4]/text()")[0],
? ? ? ?"研究方向": data_xpath.xpath("//table/tbody/tr[3]/td[4]/text()")[0],
? ? ? ?"擬招人數(shù)": data_xpath.xpath("//table/tbody/tr[4]/td[4]/text()")[0],
? ? ? ?"政治": data_xpath.xpath("//div[@class=\"zsml-result\"]/table/tbody/tr/td[1]/text()")[0],
? ? ? ?"政治詳細": data_xpath.xpath("//div[@class=\"zsml-result\"]/table/tbody/tr/td[1]/span/text()")[0],
? ? ? ?"英語": data_xpath.xpath("//div[@class=\"zsml-result\"]/table/tbody/tr/td[2]/text()")[0],
? ? ? ?"英語詳細": data_xpath.xpath("//div[@class=\"zsml-result\"]/table/tbody/tr/td[2]/span/text()")[0],
? ? ? ?"業(yè)務(wù)課一": data_xpath.xpath("//div[@class=\"zsml-result\"]/table/tbody/tr/td[3]/text()")[0],
? ? ? ?"業(yè)務(wù)課一詳細": data_xpath.xpath("//div[@class=\"zsml-result\"]/table/tbody/tr/td[3]/span/text()")[0],
? ? ? ?"業(yè)務(wù)課二": data_xpath.xpath("//div[@class=\"zsml-result\"]/table/tbody/tr/td[4]/text()")[0],
? ? ? ?"業(yè)務(wù)課二詳細": data_xpath.xpath("//div[@class=\"zsml-result\"]/table/tbody/tr/td[4]/span/text()")[0]
? ?})


def getASchoolData(url, schoolInfo: dict):
? ?"""
? ?獲取一個學校的所有數(shù)據(jù), 將調(diào)用getARecored來爬取這個學校的每一條記錄
? ?@url: ? ? ? ?“每一學校的專業(yè)界面”的url
? ?@schoolInfo: 這個學校的信息(如研究生點等;用于最終的信息存儲,再往后的頁面沒有學校信息,因此要傳入)
? ?@return:
? ?"""
? ?data_xpath = etree.HTML(rqs.get("https://yz.chsi.com.cn" + url, headers=headers).content.decode("utf-8"))
? ?result = data_xpath.xpath("""//table/tbody/tr/td[8]/a/@href""") ?# 查看詳細信息連接
? ?for i in result:
? ? ? ?getARecored(i, schoolInfo)


def getAPageData(data):
? ?"""
? ?獲取查詢后這一頁的所有學校信息,以及其連接的下一頁面的url
? ?@data: ? 當前這一頁的html數(shù)據(jù)(二進制)
? ?@return: list[學校名, 學校專業(yè)頁面url, 是否研究生院, 是否自主劃線, 是否博士生點]
? ?"""
? ?data_xpath = etree.HTML(data)
? ?school_names = data_xpath.xpath("""//*[@id="form3"]/a/text()""") ?# 學校名
? ?print(school_names)
? ?mid_urls = data_xpath.xpath("""//*[@id="form3"]/a/@href""") ?# 中間網(wǎng)址,進一步訪問每一個學校此專業(yè)的搜索結(jié)果
? ?graduate_school_opt = data_xpath.xpath("""/html/body//table/tbody/tr/td[3]""") ?# 是否研究生院
? ?autonomous_opt = data_xpath.xpath("""/html/body//table/tbody/tr/td[4]""") ?# 是否是自主劃線院校
? ?PhD_point_opt = data_xpath.xpath("""/html/body//table/tbody/tr/td[4]""") ?# 是否是博士點
? ?return [school_names, mid_urls, graduate_school_opt, autonomous_opt, PhD_point_opt]


def anlysisLoop(data):
? ?"""
? ?(統(tǒng)籌)遍歷每一頁,進入每個學校的頁面,再進入詳細頁面,爬取數(shù)據(jù)
? ?@data: 查詢后的第一個頁面的數(shù)據(jù)
? ?@return:
? ?"""
? ?data_xpath = etree.HTML(data)
? ?max_page_num = data_xpath.xpath("""/html/body//div[4]/ul/li/a/text()""")[-1] ?# 最大頁數(shù)
? ?for k in range(1, int(max_page_num) + 1):
? ? ? ?global params
? ? ? ?params["pageno"] = k
? ? ? ?apage = getAPageData(rqs.get(url.format(**params), headers=headers).content.decode("utf-8"))
? ? ? ?for s in range(len(apage[1])):
? ? ? ? ? ?schoolInfo = {} ?# 記錄這所學校的 研究生點、自主劃線、博士點
? ? ? ? ? ?for i in range(2, 5):
? ? ? ? ? ? ? ?if len(apage[i][s].xpath("./i")) != 0:
? ? ? ? ? ? ? ? ? ?schoolInfo[["gso", "ao", "phd"][i - 2]] = 1
? ? ? ? ? ? ? ?else:
? ? ? ? ? ? ? ? ? ?schoolInfo[["gso", "ao", "phd"][i - 2]] = 0
? ? ? ? ? ?getASchoolData(apage[1][s], schoolInfo)


data = getSearchData(params) ?# 獲取第一個頁面的數(shù)據(jù)
anlysisLoop(data) ?# 傳入此數(shù)據(jù),進行爬取
df = pd.DataFrame(table) ?# 把存儲的列表轉(zhuǎn)化成 DF 對象,方便儲存
df.to_csv("output.csv", encoding="gbk", index=False) ?# 存儲到 csv 文件

研招網(wǎng)爬蟲信息爬取的評論 (共 條)

分享到微博請遵守國家法律
张家界市| 新密市| 镇平县| 库车县| 石家庄市| 五华县| 卢湾区| 辰溪县| 晋宁县| 进贤县| 乐业县| 文安县| 邵武市| 综艺| 鄢陵县| 忻城县| 监利县| 古交市| 白河县| 齐齐哈尔市| 楚雄市| 庆城县| 南部县| 长寿区| 康平县| 时尚| 湖州市| 三穗县| 安福县| 阿克苏市| 渝中区| 乌兰县| 桃园县| 道孚县| 蓬莱市| 秦安县| 佛山市| 石渠县| 水富县| 财经| 巧家县|