Python 简单爬虫入门

使用requests库获取网页源代码

通用代码:

def getHTMLText(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()
        r.encoding = 'utf-8'
        return r.text
    except:
        return ""

使用bs4的BeautifulSoup库获取标签元素和值

soup = BeautifulSoup(html, "html.parser")

例如:要获取html表格的数据,之后写入excel

思路:将html的表格数据获取出来,存入二位数组,然后将数组写入excel

第一行通常是表头

def getData(soup):
    trTags = soup.find_all('tr')
    data = []
    for (index, tr) in enumerate(trTags):
        if index == 0:
            thTags = tr.find_all('th')
            data.append([th.text for th in thTags])
            continue
        data.append([td.text for td in tr.find_all('td')])
    return data

先使用soup = BeautifulSoup(open(‘datare.html’), ‘html.parser’)将网页代码解析出来,然后使用soup.find_all函数查找所有的tr标签,tr表示html表格的一行的元素,第一行tr就是表头,然后再遍历tr获取td里面的每一个文本就是excel的每一个单元格的内容,可以使用二维数组先存储下来。然后将二维数组写入excel,用到xlwt这个包,遍历每一个数据写入excel。

写入excel

使用到xlwt这个库。

通用方法代码,参数传入二维数组

# 将数据写入excel
def writeExcel(data):
    workbook = xlwt.Workbook()
    sheet = workbook.add_sheet("Sheet")
    for i in range(len(data)):
        for j in range(len(data[i])):
            sheet.write(i, j, data[i][j])
    workbook.save("college.xls")

例子:爬取大学排行榜倒数50个的信息

完整代码:

import requests
import xlwt
from bs4 import BeautifulSoup


def getHTMLText(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()
        r.encoding = 'utf-8'
        return r.text
    except:
        return ""


# 获取大学排名信息,将html表格转换为二维数组
def getData(soup):
    trTags = soup.find_all('tr')
    data = []
    for (index, tr) in enumerate(trTags):
        if index == 0:
            thTags = tr.find_all('th')
            data.append([th.text for th in thTags])
            continue
        data.append([td.text for td in tr.find_all('td')])
    return data


# 获取某段区间排名的大学
def getSectionData(data, start, end):
    return data[start:end]


# 将数据写入excel
def writeExcel(data):
    workbook = xlwt.Workbook()
    sheet = workbook.add_sheet("Sheet")
    for i in range(len(data)):
        for j in range(len(data[i])):
            sheet.write(i, j, data[i][j])
    workbook.save("college.xls")


def main():
    url = 'https://gaokao.xdf.cn/201911/10991728.html'
    html = getHTMLText(url)
    soup = BeautifulSoup(html, "html.parser")
    data = getData(soup)
    sectionData = getSectionData(data, -51, -1)
    print(sectionData)
    writeExcel(sectionData)


main()

效果:

image-20221215154931654

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万伏小太阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值