xpath爬取好大学网站数据

xpath爬好大学网站

from lxml import etree
import pymongo
from config import *
import requests

# 连接mongoDB数据库
client = pymongo.MongoClient(MONGO_URL,connect=False)
db = client[MONGO_DB]


def get_page(year):
    url = "http://www.zuihaodaxue.cn/zuihaodaxuepaiming" + year + ".html"
    response = requests.get(url)
    response.encoding = 'UTF-8'
    return response.text


def parse_page_detail(html, year):
    # 使用xpth爬取网页
    etree_html = etree.HTML(html)
    排名 = etree_html.xpath('//tbody[@class="hidden_zhpm"]/tr/td[1]/text()')
    学校 = etree_html.xpath('//tbody[@class="hidden_zhpm"]/tr/td[2]/div/text()')
    省市 = etree_html.xpath('//tbody[@class="hidden_zhpm"]/tr/td[3]/text()')
    总分 = etree_html.xpath('//tbody[@class="hidden_zhpm"]/tr/td[4]/text()')
    生源质量 = etree_html.xpath('//tbody[@class="hidden_zhpm"]/tr/td[5]/text()')
    培养结果 = etree_html.xpath('//tbody[@class="hidden_zhpm"]/tr/td[6]/text()')
    科研规模 = etree_html.xpath('//tbody[@class="hidden_zhpm"]/tr/td[7]/text()')
    科研质量 = etree_html.xpath('//tbody[@class="hidden_zhpm"]/tr/td[8]/text()')
    顶尖成果 = etree_html.xpath('//tbody[@class="hidden_zhpm"]/tr/td[9]/text()')
    顶尖人才 = etree_html.xpath('//tbody[@class="hidden_zhpm"]/tr/td[10]/text()')
    科技服务 = etree_html.xpath('//tbody[@class="hidden_zhpm"]/tr/td[11]/text()')
    成果转化 = etree_html.xpath('//tbody[@class="hidden_zhpm"]/tr/td[12]/text()')
    学生国际化 = etree_html.xpath('//tbody[@class="hidden_zhpm"]/tr/td[13]/text()')
    # 将数据压缩
    data = zip(排名, 学校, 省市, 总分, 生源质量, 培养结果, 科研规模, 科研质量, 顶尖成果, 顶尖人才, 科技服务, 成果转化, 学生国际化)
    # 构建字典
    for it in data:
        yield {
            "year": year,
            "排名": it[0],
            "学校": it[1],
            "省市": it[2],
            "总分": it[3],
            "生源质量": it[4],
            "培养结果": it[5],
            "科研规模": it[6],
            "科研质量": it[7],
            "顶尖成果": it[8],
            "顶尖人才": it[9],
            "科技服务": it[10],
            "成果转化": it[11],
            "学生国际化": it[12]
        }


# 存到mongoDB数据库
def save_to_mongoDB(data):
    if db[MONGO_TABLE].insert(data):
        print('存储成功:', data)
        return True
    print('存储失败')
    return False


if __name__ == '__main__':
    year = "2020"
    html = get_page(year)
    for data in parse_page_detail(html, year+"年"):
        save_to_mongoDB(data)

加粗样式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值