首页 > 编程语言 >python爬虫-使用requests库和BeautifuSoup库爬取静态网页

python爬虫-使用requests库和BeautifuSoup库爬取静态网页

时间:2024-11-19 10:19:15浏览次数:3  
标签:headers python BeautifuSoup list6 list5 import requests response append

目前在自学python中,作此记录,欢迎交流。

此次练手对象为爬取中国大学排名内容并进行输出;总的思路如下:

1、选取一个网站,观察所需要的信息位置

网站链接:中国大学排名_高校排名_中国大学排行榜-中国教育在线

当前页面右键鼠标,选择查看源代码,观察所需内容位置:

可以看到内容保存在div标签下面,仔细观察发现前几年的也是在这个标签下面,只是位置不一样,此时这是静态网页,就可以用requests和BeautSoup进行处理了,要是在这里找不到所需内容,说明网站采取的是动态加载方法,以个人目前的水平来说,认为这两个库暂时处理不了,需要用到抓包技术,比如selenium库的自动化等;

2、使用request和BeautifulSoup进行解析,具体使用方法可以在站内进行学习,有很多可以学习的内容;在对初始数据进行整理处理,得到自己想要的数据和格式;

3、将数据进行输出或者保存到本地,可以使用CSV或者使用with打开文本进行保存

完整代码如下:

import csv
import requests
from bs4 import BeautifulSoup
import pandas as pd

def geturl(url):#获取初始内容
    headers = {自己的headers}
    response = requests.get(url, headers=headers)
    if response.status_code == 200:#一般都是200,headers具体看自己浏览器,在页面右击选择检查查看,也可以使用try-except进行防错
        response.encoding=response.apparent_encoding#防止返回乱码
        return response.text
    else:
        print("状态码不对:{}".format(response.status_code))
        return None

def gettxt(html):#对内容进行分析整理并输出
    soup = BeautifulSoup(html, 'html.parser')#对获取的内容进行标签整理
    list1=[]
    list2=[]
    list3=[]
    list4=[]
    list5=[]#list1-list5均是临时使用,也可以不使用,只是放一块初学者容易乱,最终要返回的是list6
    list6=[]
    list1=soup.find_all('div',{'class':'u-body clearfix'})#观察源代码,看看信息放在哪个位置,第一个是标签名,第二个是值,具体可以查看该函数使用方法
    list2=list1[0].find_all('tr')#要是获取前几年的,可以使用for循坏改变liat1[i]进行遍历获取
    for i in list2:
        list3.append(i.get_text())#把内容提取出来
    for i in list3:
        list4.append(i.replace('\n',' '))#把\n替换掉,要不然后面写入的就是一行一行写入,或者面板输出就是一行一行的输出,不美观,此时子列表为字符串
    for i in list4:
        list5.append(i.split(' '))#将子列表进一步转化为列表
    for i in range(len(list5)):
        list6.append(list(filter(lambda x:x !="", list5[i])))#去掉空字符
    print(list6)#这是先看看符不符合自己要求
    return list6

def main():
    url="https://www.eol.cn/e_html/gk/dxpm/index.shtml"
    t=geturl(url)
    l=[]
    l=gettxt(t)
    a=pd.DataFrame(l)
    a.to_csv("自己需要保存的文件地址")#这个函数可以设置列名,只不过我没设置


main()

有疑问或有交流想法的欢迎来指教讨论,大家互相学习

标签:headers,python,BeautifuSoup,list6,list5,import,requests,response,append
From: https://blog.csdn.net/ldjdjdk/article/details/143856750

相关文章

  • python-爬取网站天气数据-1
    一、选择一个网站,观察需要的内容位置这次练手对象是一个2345网站天气数据,如下:南京历史天气查询_历史天气预报查询_2345天气预报这里面我想要获得的天气数据如上图,我需要将这些数据爬取下来并保存为本地文件。二、查看代码,观察内容信息在代码中所处的位置右键,选择查看源代......
  • Python爬虫(爬取博客网为例)
    一、前言场景1:一个网络爬虫,顺序爬取一个网页花了一个小时,采用并发下载就减少到了20分钟。场景2:一个应用软件优化前每次打开网页需要3秒,采用异步并发提升到了200毫秒。假设一个工程的工作量为100,不采用并发编程就相当于由一个人去完成这个工作量为100的所有工作内容,可能需要1......
  • Python中的平方功能:方便实用的数据处理利器
    Python作为一门广泛应用于数据科学、机器学习和人工智能领域的编程语言,具有许多实用的功能。其中,Python中的平方功能是一个非常有用和实用的数据处理利器。简洁易用的语法Python中的平方功能使用的是**运算符,其语法为**数**,其中数可以是任意实数、整数或字符串。例如,要计......
  • Python用subprocess管理子进程在Windows平台实现平行效果
    在Python中,使用subprocess模块管理子进程时,如果你在Windows平台上尝试实现类似于Unix系统的“平行效果”(即父子进程可以同时运行),你可能会遇到一些问题。在Unix系统中,子进程是独立于父进程的,它们可以同时运行。但在Windows系统中,当你使用subprocess创建子进程时,默认情况下会存在父......
  • 《Python从入门到实践》第四章动手试一试
    4-1比萨:想出至少三种你喜欢的比萨,将其名称存储在一个列表中,再使用for循环将每种比萨的名称都打印出来。修改这个for循环,使其打印包含比萨名称的句子,而不仅仅是比萨的名称。对于每种比萨,都显示一行输出,如“Ilikepepperonipizza”。在程序末尾添加一行代码,它不在for循环中,指......
  • Python设计模式详解之1 —— 单例模式
    单例模式(SingletonPattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供全局访问点。单例模式适用于需要确保全局唯一实例的场景,例如配置管理、日志记录器、数据库连接等。1.单例模式的特点全局唯一性:在整个应用程序的生命周期内,单例类只能有一个实例。全局访问:......
  • Python设计模式详解之2 —— 工厂模式
    工厂模式(FactoryPattern)是一种创建型设计模式,旨在定义一个用于创建对象的接口,但由子类决定实例化哪个类。工厂模式可以帮助我们将对象的创建与其使用分离,增强代码的可扩展性和维护性。工厂模式的分类简单工厂模式(SimpleFactoryPattern)工厂方法模式(FactoryMethodPatte......
  • (免费源码)计算机毕业设计必看必学 原创定制程序 java、PHP、python、小程序、文案全套
    摘 要为了方便用户快速定位自己感兴趣的国内热门旅游景点信息,国内热门景点推荐系统应运而生。本系统的前端界面主要实现页面的美观和动态效果使之符合广大群众的审美观,后台主要使用的技术主要有Java编程语言,SSM框架,MySQL数据库的旅游推荐系统解决了传统旅游推荐方式中数据......
  • Python设计模式详解之3 —— 抽象工厂模式
    抽象工厂模式也是一种创建型设计模式,它提供一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们的具体类。它特别适合在需要创建多个相关对象且这些对象在逻辑上属于一个“产品族”时使用。结构:抽象产品:定义了产品家族中每个产品的接口。具体产品:实现抽象产品接口......
  • (分享源码)计算机毕业设计必看必学 上万套实战教程手把手教学JAVA、PHP,node.js,C++、pyth
     摘 要21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认知向理性认知提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存储达到准确、快速、完善,并能提高工作管理效率,促进其发展。论文主要是对医疗门诊管理......