![](https://csdnimg.cn/release/download_crawler_static/86367479/bg1.jpg)
import requests
from lxml import etree
import xlwt
#创建 Excel 文档
xls = xlwt.Workbook()
sheet = xls.add_sheet('选科要求')
sheet.write(0, 0, '学校')
sheet.write(0, 1, '专业')
sheet.write(0, 2, '选科要求')
# 定义变量 k,存放 Excel 文件中的行
k = 1
# 各个学校的 dm,mc 信息网址
url1 = "http://xkkm.sdzk.cn/zy-manager-web/html/xx.html"
# 各个学校选科要求的网址
url2 = "http://xkkm.sdzk.cn/zy-manager-web/gxxx/searchInfor"
#伪装成浏览器
head = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
'Content-Type': 'text/html;charset=UTF-8'
}
response = requests.get(url=url1, headers=head)
response.encoding = None
html1 = etree.HTML(response.text)
# 利用 xpath 获取学校名和各学校的选考科目要求的网址、schools 用于存放学校名称、scmc 用
于存放学校的 mc 属性
schools = html1.xpath('//div[@id="div5"]//tr/td[4]/text()')
dms = html1.xpath('//div[@id="div5"]//tr/td[5]/form/input[1]/@value')
mcs = html1.xpath('//div[@id="div5"]//tr/td[5]/form/input[2]/@value')
# 对每一个学校访问
for j in range(len(schools)):
data = {
'dm': dms[j],
'mc': mcs[j]
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36'
}
response = requests.post(url=url2, data=data, headers=headers)
html = etree.HTML(response.text)
# xpath 匹配专业和选科要求、pors 用于存放各个学校的专业、limits 用于存放各个专业
的选科要求
pros = html.xpath('//div[@id="ccc"]//tr/td[3]/text()')
limits = html.xpath('//div[@id="ccc"]//tr/td[4]/text()')