python爬虫demo

# coding:utf-8
import requests
from bs4 import BeautifulSoup
import pandas

# 反扒使用 http://www.user-agent.cn/
ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0'
# 需要抓取的url
url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html'
r = requests.get(url, headers={'User-Agent': ua})
r.encoding = 'utf-8'
# 获取整个页面的内容
html = r.text
soup = BeautifulSoup(html, 'html.parser')
# 定义需要导出的列头,内容
# 列名
columms_str = []
# 排名
ranking_str = []
# 学校名称
school_str = []
# 省份
province_str = []
# 总分
totalscore_str = []
# 获取页面的table
table = soup.find("table", class_='table table-small-font table-bordered table-striped')
# print(table)
# 获取列头
columms = table.thead.tr.find_all("th")
# 取前4列既满足要求
for index in range(0, 4):
    # 列名
    columms_str.append(columms[index].string)
    # 打印列名
    print(columms[index].string)
# 获取表格主体中的所有行
trs = table.tbody.find_all("tr", class_='alt')
# print(trs)
for tr in trs:
    # 获取每行的所有列
    tds = tr.find_all("td")
    # 取前4列既满足要求
    for index in range(0, 4):
        # 存储列的内容
        td = ''
        if index == 1:
            # 获取单元格内容
            td = tds[index].div.string
            # 学校名称
            school_str.append(td)
        else:
            # 获取单元格内容
            td = tds[index].string
            if index == 0:
                # 排名
                ranking_str.append(td)
            if index == 2:
                # 省份
                province_str.append(td)
            if index == 3:
                # 总分
                totalscore_str.append(td)
        # 打印每个单元格的内容
        print(td)

# 输出到Excel中
# 数据
data = {columms_str[0]: ranking_str, columms_str[1]: school_str, columms_str[2]: province_str, columms_str[3]: totalscore_str}
# 存储路径(可固定路径:D:\\www\\result.xlsx)
filepath = 'result.xlsx'
df = pandas.DataFrame(data)
# 写入excel
df.to_excel(filepath, sheet_name='中国最好大学排名', encoding='utf-8', index=False, header=True)
print('Success')
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值