DataWhale-task2:爬取中国大学排名&丁香论坛评论

本文详细介绍了如何使用Python的requests库和BeautifulSoup库来爬取中国大学排名信息,并利用lxml和XPath从丁香园论坛抓取用户回复内容。文章展示了完整的代码实现过程,包括网页内容获取、数据解析和结果展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

任务2

事实上这两个项目的实现代码我都没搞清楚,可能涉及到的BeautifulSoup和Xpath我都没搞明白吧,然后这次的网页中爬取内容的定位我也发现有些找不到,T_T。
代码都不是我敲的哦,都是Datawhale分享的资料,特此说明啊~

爬取中国大学排名

'''
爬取url:http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html
爬取思路:
1.从网络上获取大学排名网页内容
2.提取网页内容中信息到合适的数据结构(二维数组)-排名,学校名称,总分
3.利用数据结构展示并输出结果
'''

#导入库
import requests
from bs4 import BeautifulSoup
import bs4

#1.从网络上获取大学排名网页内容
def GetHTMLText(url):
    try:
        r = requests.get(url,timeout = 30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding  #?
        return r.text
    except:
        return ""
    
 
#2.提取网页内容中信息到合适的数据结构(二维数组)
#1.查看网页源代码,观察并定位到需要爬取内容的标签
#2.使用bs4的查找方法提取所需信息-‘排名,学校名称,总分’

def fillUnivList(ulist,html):
    soup = BeautifulSoup(html,'html.parser')
    for tr in soup.find('tbody').children: #?
        if isinstance(tr,bs4.element.Tag):
            tds = tr('td')
            #根据实际提取需要的内容
            ulist.append([tds[0].string,
                           tds[1].string,tds[3].string])
    

#3.利用数据结构展示并输出结果

def printUnivList(ulist,num = 20):
    tplt = '{0:^10}\t{1:{3}^10}\t{2:^10}' #?
    print(tplt.format('排名','学校名称','总分',chr(12288)))
    for i in range(num):
        u = ulist[i]
        print(tplt.format(u[0],u[1],u[2],chr(12288)))

#存储爬取结果的容器
u_info = []
url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html'

html = GetHTMLText(url) #调用GetHTMLText函数,爬取网页
html

fillUnivList(u_info,html)#爬取

printUnivList(u_info,num = 10) #打印输出30个信息

丁香园论坛

这个帖子好早啊2003年的,因为我不会看定位,不会改参数,所以换了个帖子,没有爬到任何评论T_T。
在这里插入图片描述

'''
2.2.4 实战:爬取丁香园-用户名和回复内容

爬取思路:
1.获取url的html
2.lxml解析html
3.利用Xpath表达式获取user和content
4.保存爬取的内容
'''

from lxml import etree
import requests
url = 'http://www.dxy.cn/bbs/thread/626626#626626'
#url = 'https://www.dxy.cn/bbs/newweb/pc/post/43189415' #尝试失败

#获取url的html
req = requests.get(url)
html = req.text

#lxml解析html
tree = etree.HTML(html)
tree

#利用Xpath表达式获取use和content(重点)

user = tree.xpath('//div[@class="auth"]/a/text()')
content = tree.xpath('//td[@class = "postbody"]')


#保存爬取的内容
results = []
for i in range(0,len(user)):
    results.append(user[i].strip() + ":" 
                   +content[i].xpath('string(.)').strip())
    
#打印爬取结果
for i,result in zip(range(0,len(user)),results):
    print("user"+str(i+1)+"—"+result)
    print('*'*100)

结果显示

在这里插入图片描述
在这里插入图片描述

>_<

就是这么粗心>_<
在这里插入图片描述

内容概要:本文详细介绍了900W或1Kw,20V-90V 10A双管正激可调电源充电机的研发过程和技术细节。首先阐述了项目背景,强调了充电机在电动汽车和可再生能源领域的重要地位。接着深入探讨了硬件设计方面,包括PCB设计、磁性器件的选择及其对高功率因数的影响。随后介绍了软件实现,特别是程序代码中关键的保护功能如过流保护的具体实现方法。此外,文中还提到了充电机所具备的各种保护机制,如短路保护、欠压保护、电池反接保护、过流保护和过温度保护,确保设备的安全性和可靠性。通讯功能方面,支持RS232隔离通讯,采用自定义协议实现远程监控和控制。最后讨论了散热设计的重要性,以及为满足量产需求所做的准备工作,包括提供详细的PCB图、程序代码、BOM清单、磁性器件和散热片规格书等源文件。 适合人群:从事电力电子产品研发的技术人员,尤其是关注电动汽车充电解决方案的专业人士。 使用场景及目标:适用于需要高效、可靠充电解决方案的企业和个人开发者,旨在帮助他们快速理解和应用双管正激充电机的设计理念和技术要点,从而加速产品开发进程。 其他说明:本文不仅涵盖了理论知识,还包括具体的工程实践案例,对于想要深入了解充电机内部构造和工作原理的人来说是非常有价值的参考资料。
&gt; Configure project :unityLibrary Variant &#39;debug&#39;, will keep symbols in binaries for: &#39;libunity.so&#39; &#39;libil2cpp.so&#39; &#39;libmain.so&#39; Variant &#39;release&#39;, symbols will be stripped from binaries. &gt; Configure project :launcher Variant &#39;debug&#39;, will keep symbols in binaries for: &#39;libunity.so&#39; &#39;libil2cpp.so&#39; &#39;libmain.so&#39; Variant &#39;release&#39;, symbols will be stripped from binaries. &gt; Task :unityLibrary:preBuild UP-TO-DATE &gt; Task :unityLibrary:preReleaseBuild UP-TO-DATE &gt; Task :unityLibrary:writeReleaseAarMetadata UP-TO-DATE &gt; Task :unityLibrary:generateReleaseResValues UP-TO-DATE &gt; Task :unityLibrary:generateReleaseResources UP-TO-DATE &gt; Task :launcher:preBuild UP-TO-DATE &gt; Task :launcher:preReleaseBuild UP-TO-DATE &gt; Task :unityLibrary:packageReleaseResources UP-TO-DATE &gt; Task :unityLibrary:extractDeepLinksRelease UP-TO-DATE &gt; Task :launcher:javaPreCompileRelease UP-TO-DATE &gt; Task :unityLibrary:processReleaseManifest UP-TO-DATE &gt; Task :unityLibrary:compileReleaseLibraryResources UP-TO-DATE &gt; Task :unityLibrary:parseReleaseLocalResources UP-TO-DATE &gt; Task :unityLibrary:generateReleaseRFile UP-TO-DATE &gt; Task :launcher:checkReleaseAarMetadata UP-TO-DATE &gt; Task :launcher:generateReleaseResValues UP-TO-DATE &gt; Task :unityLibrary:javaPreCompileRelease UP-TO-DATE &gt; Task :launcher:mapReleaseSourceSetPaths UP-TO-DATE &gt; Task :launcher:generateReleaseResources UP-TO-DATE &gt; Task :launcher:mergeReleaseResources UP-TO-DATE &gt; Task :launcher:packageReleaseResources UP-TO-DATE &gt; Task :launcher:parseReleaseLocalResources UP-TO-DATE &gt; Task :launcher:createReleaseCompatibleScreenManifests UP-TO-DATE &gt; Task :launcher:extractDeepLinksRelease UP-TO-DATE &gt; Task :unityLibrary:compileReleaseJavaWithJavac UP-TO-DATE &gt; Task :unityLibrary:bundleLibCompileToJarRelease UP-TO-DATE &gt; Task :unityLibrary:bundleLibRuntimeToJarRelease UP-TO-DATE &gt; Task :launcher:processReleaseMainManifest UP-TO-DATE &gt; Task :unityLibrary:processReleaseJavaRes UP-TO-DATE &gt; Task :unityLibrary:createFullJarRelease UP-TO-DAT
03-18
&lt;think&gt;好的,我现在需要帮助用户理解Unity Android项目的构建过程,特别是如何配置调试(debug)和发布(release)版本。首先,我需要回忆一下Unity和Android构建相关的知识,并结合用户提供的引用内容来组织答案。 首先,用户提到了环境变量配置,比如Android Home、JDK和Gradle目录。根据引用[2],用户需要进入系统设置配置这些变量。这可能影响构建过程中的工具链路径是否正确,所以这部分是基础,必须提到。 接下来,用户想了解调试和发布变体的配置。在Android开发中,通常通过Build Types来区分debug和release,比如在Gradle中配置。Unity可能使用Gradle来构建Android项目,因此需要修改Gradle脚本中的buildTypes部分。这可能包括代码混淆、签名配置和优化选项。需要引导用户找到Unity导出的Gradle项目,并修改对应的build.gradle文件。 另外,引用[3]提到了StateMachine Transitions Asset API,这可能与动画或状态机配置有关,但不太直接相关。而引用[4]中的分析工具如Inspect Code和配置菜单可能帮助用户优化代码,但用户的问题更关注构建过程。不过,用户可能需要了解如何分析构建后的依赖关系或性能,所以可以提到这些工具作为补充。 用户还提到了Prefab Builders和AssetGraph,但引用[1]中的Replace GameObject by Name可能不直接相关,暂时可以忽略。 因此,回答的结构应该是先介绍构建流程的基础,包括环境变量配置,然后详细说明如何通过Gradle配置调试和发布版本,包括代码混淆、签名和优化。接着,可以提到Unity中的构建设置,比如Player Settings中的Bundle版本号和脚本调试选项。然后,补充使用分析工具检查构建结果,如引用[4]中的Analyze Dependencies或Inspect Code。最后,总结关键点。 需要确保使用正确的LaTeX格式,比如行内公式用$...$,独立公式用$$...$$,但这个问题可能涉及较少的数学内容,可能不需要太多公式。不过如果有提到性能优化指标,可能需要用LaTeX,比如帧率优化等,但暂时可能不需要。 现在需要检查是否有遗漏的引用内容,并确保每个引用在回答中合理出现。引用[2]用于环境变量,引用[3]可能用于构建后的资源处理,引用[4]用于分析工具,引用[1]可能不适用,所以可以忽略。 最后,生成相关问题,需要围绕构建过程、环境配置、Gradle调整、优化方法、问题排查等方面提问。&lt;/think&gt;### Unity Android项目构建流程及调试/发布版本配置 #### 1. 环境变量配置 Unity构建Android项目需要正确配置以下环境变量: - **Android Home**:指向Android SDK路径 - **JDK目录**:Java开发工具包路径 - **Gradle目录**:Gradle构建工具路径 配置方法:进入Unity编辑器菜单栏的 **系统管理=&gt;系统设置**,在`Environment variables`中新增或修改对应变量[^2]。 #### 2. 调试与发布版本的构建差异 在Unity中,调试版(Debug)和发布版(Release)主要通过以下配置区分: - **代码优化**:发布版启用代码混淆(ProGuard/R8)和压缩 - **签名配置**:发布版需设置正式签名密钥,调试版使用默认调试密钥 - **日志与调试**:调试版保留日志输出和脚本调试符号 #### 3. Gradle构建脚本配置 Unity导出Android项目时生成`build.gradle`文件,可通过修改`buildTypes`块定义变体: ```groovy android { buildTypes { debug { minifyEnabled false // 关闭代码压缩 debuggable true // 允许调试 } release { minifyEnabled true // 开启代码压缩 proguardFiles getDefaultProguardFile(&#39;proguard-android.txt&#39;), &#39;proguard-rules.pro&#39; // 混淆规则 signingConfig signingConfigs.release // 签名配置 } } } ``` #### 4. Unity编辑器设置 - **Player Settings**:设置Bundle版本号、包名、图标等 - **Script Debugging**:在`Build Settings`中勾选`Development Build`以启用脚本调试功能 - **资源优化**:通过`AssetGraph`进行资源替换或预处理(例如实验性的按名称替换GameObject功能)[^1] #### 5. 构建后分析 使用Android Studio的**Analyze**菜单工具: - **Inspect Code**:检测代码规范 - **Analyze Dependencies**:检查模块依赖关系 - **Analyze Stacktrace**:调试崩溃日志[^4] #### 6. 性能优化参考 通过`StateMachine Transitions Asset API`优化动画状态机资源,或使用`BlendTree`控制动画混合权重[^3]。发布版建议启用`Minify`和`Resource Shrinking`减少包体积。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值