Python网络数据采集笔记
- 格式:docx
- 大小:21.65 KB
- 文档页数:10
Python中的数据采集与清洗技巧随着互联网的快速发展,数据成为了当今社会最重要的资源之一。
而对于数据分析师、数据科学家和市场营销人员来说,数据采集和清洗是他们工作中不可或缺的环节。
在这个过程中,Python成为了最受欢迎的编程语言之一,因为它提供了一些强大的工具和库来处理数据。
本文将介绍Python中一些常用的数据采集和清洗技巧。
1. 网络数据采集在Python中,有很多库可以用于网络数据采集,其中最常用的是requests库。
通过使用requests库,我们可以向网页发送请求并获取网页的内容。
在获得网页内容后,我们可以使用正则表达式或者BeautifulSoup库来提取我们需要的数据。
不过需要注意的是,在进行网络数据采集时,要尊重网站的规则,不要滥用爬虫,以免给服务器带来过大的负担。
2. 文件数据采集除了从网页中获取数据,我们也可以从文件中获取数据。
Python提供了很多处理文件的方法,例如使用open()函数来打开文件,使用read()函数来读取文件内容。
常见的文件类型包括txt、csv、Excel等。
对于不同的文件类型,可以使用相应的库来读取和处理。
例如,对于csv文件,我们可以使用csv库来读取和写入数据。
3. 数据清洗与处理在进行数据清洗和处理之前,我们首先需要了解数据的结构和特点。
可以使用pandas库来读取和处理数据。
pandas库提供了一些强大的工具和函数,例如可以使用DataFrame读取和处理表格数据,使用Series处理序列类型数据等。
在数据清洗过程中,我们可以使用dropna()函数来删除缺失值,使用drop_duplicates()函数来删除重复值,使用fillna()函数来填充缺失值等。
4. 数据转换与格式化在进行数据分析之前,通常需要对数据进行转换和格式化。
在Python中,可以使用numpy库来进行数值计算和矩阵运算。
可以使用matplotlib库来绘制图表和可视化数据。
Python网络爬虫中的在线视频与直播数据抓取随着互联网和数字技术的快速发展,在线视频和直播已经成为人们日常娱乐和获取信息的重要方式。
Python作为一种强大的编程语言,可以用于实现网络爬虫,并能够帮助我们抓取在线视频和直播数据,为用户提供更好的观看体验和使用感受。
本文将介绍Python网络爬虫中抓取在线视频和直播数据的方法和技巧。
一、在线视频数据抓取在网络上,有许多平台提供了丰富多样的在线视频资源,如优酷、腾讯视频、爱奇艺等。
我们可以利用Python编写网络爬虫程序,来抓取这些平台上的视频数据。
1. 网页分析与解析首先,我们需要通过发送HTTP请求,获取目标网页的HTML源代码。
然后,利用Python中的解析库(如BeautifulSoup、lxml等)对源代码进行解析和提取,从而获取视频的相关信息,如标题、播放量、评论等。
2. URL拼接与下载接下来,我们需要从视频信息中提取出视频的URL链接。
有些平台可能会对视频链接进行加密或者隐藏,我们可以通过分析网页中的JavaScript脚本,来获取真实的视频链接。
获取到视频链接后,我们可以使用Python的下载库(如requests、urllib等)来进行视频的下载。
3. 视频解码与播放在下载完成后,视频文件通常是经过编码的,我们可以使用Python 的解码库(如ffmpeg、cv2等)来进行视频解码工作,并通过Python 的图形库(如opencv、pygame等)来进行视频的播放。
二、直播数据抓取与在线视频不同,直播数据是实时生成的,我们需要通过爬虫程序来实时抓取直播平台上的数据。
1. 弹幕数据抓取直播平台上,观众可以实时发送消息,这些消息通常以弹幕的形式出现在视频画面上。
我们可以通过网络爬虫程序抓取直播平台的弹幕数据,进而进行分析和处理。
2. 实时数据采集与展示除了弹幕数据,直播平台上还会提供其他实时数据,如在线观看人数、点赞数量等。
我们可以编写爬虫程序,实时获取这些数据,并通过可视化工具(如matplotlib、Tableau等)进行展示和分析。
Python网络爬虫的地理与地数据采集Python网络爬虫是一种自动化的数据采集工具,通过模拟浏览器请求和解析网页内容,可以获取各种类型的数据。
在地理与地数据采集方面,Python网络爬虫可以用于获取地理信息、地图数据、地理数据等。
一、地理信息的获取地理信息包括地名、地点等与地理位置相关的数据。
Python网络爬虫可以通过搜索引擎的API或者第三方地理信息接口,获取特定地点的经纬度、地址、城市、国家等信息。
例如,使用百度地图API可以通过传入地名或者具体地址,获取相应地点的经纬度信息,实现地理位置信息的采集。
通过Python编写相应的代码,可以自动化地获取大量地点的地理信息。
二、地图数据的采集地图数据包括地图图片、地图矢量数据等。
Python网络爬虫可以通过爬取各类地图服务提供商的网站,获取地图图片或者地图矢量数据。
以OpenStreetMap为例,它是一个开放的地图服务,提供了Web端的地图浏览功能。
通过Python网络爬虫可以获取OpenStreetMap的地图图片或者地图矢量数据,实现地图数据的采集与下载。
三、地理数据的采集地理数据包括地形数据、气候数据、人口数据等。
Python网络爬虫可以将地理数据从专门的地理信息网站或者气象局等官方网站上爬取下来。
例如,我们可以通过Python网络爬虫访问国家统计局或者世界银行等机构的网站,获取各国的人口数据、经济数据等地理统计数据。
通过编写合适的爬虫代码,将这些地理数据爬取下来,可以用于地理分析、统计研究等领域。
总结:Python网络爬虫在地理与地数据采集方面发挥着重要的作用。
通过获取地理信息、地图数据和地理数据,我们可以进行地理分析、地理可视化、地理统计等工作。
合理运用Python网络爬虫技术,可以帮助我们更好地理解和利用地理与地数据。
使用Python自动化网络数据抓取在当今数字化的时代,数据成为了一种极其宝贵的资源。
从市场分析、学术研究到日常的信息收集,我们常常需要从互联网上获取大量的数据。
手动收集这些数据不仅费时费力,而且效率低下。
这时候,使用 Python 进行自动化网络数据抓取就成为了一种非常有效的解决方案。
网络数据抓取,简单来说,就是通过程序自动从网页中提取我们需要的信息。
Python 拥有丰富的库和工具,使得这个过程变得相对简单和高效。
下面让我们逐步深入了解如何使用 Python 来实现这一目标。
首先,我们需要了解一些基本的概念和知识。
HTTP 协议是网络通信的基础,当我们在浏览器中输入一个网址时,浏览器实际上就是通过 HTTP 协议向服务器发送请求,并接收服务器返回的响应,其中包含了网页的 HTML 代码。
而我们的数据抓取就是基于这个过程。
在 Python 中,`requests`库是一个常用的用于发送 HTTP 请求的工具。
通过它,我们可以轻松地向指定的网址发送 GET 或 POST 请求,并获取响应的内容。
```pythonimport requestsresponse = requestsget('print(responsetext)```上述代码中,我们使用`requestsget()`方法向`https://`发送了一个 GET 请求,并将获取到的响应内容打印出来。
但这只是获取了整个网页的 HTML 代码,还不是我们最终需要的数据。
为了从 HTML 代码中提取出有用的数据,我们需要使用解析库,比如`BeautifulSoup` 。
```pythonfrom bs4 import BeautifulSouphtml_doc ="""<html><head><title>Example</title></head><body><p>Hello, World!</p><p>Another paragraph</p></body></html>"""soup = BeautifulSoup(html_doc, 'htmlparser')for p in soupfind_all('p'):print(ptext)```在上述代码中,我们首先创建了一个简单的 HTML 文档,然后使用`BeautifulSoup` 的`find_all()`方法找出所有的`<p>`标签,并打印出其中的文本内容。
Python爬虫技术在网络数据采集中的自动化实现Python爬虫技术在网络数据采集中起着重要的作用。
它能够帮助我们自动化地从互联网上获取所需的数据,无需手动操作,提高了数据采集的效率和准确性。
本文将介绍Python爬虫技术在网络数据采集中的自动化实现方法,以及一些相关技巧和注意事项。
一、准备工作在开始使用Python爬虫技术进行数据采集之前,我们需要准备一些必要的工具和环境。
首先,我们需要安装Python编程语言,以及相关的第三方库,如BeautifulSoup、Scrapy等。
这些库提供了丰富的功能和接口,方便我们进行网页解析和数据抓取。
其次,我们需要了解基本的HTML和HTTP协议知识,以便理解网页的结构和相应的请求方式。
二、网页解析在进行数据采集之前,我们首先需要对目标网页进行解析,以便提取出所需的数据。
Python提供了多种解析库,如BeautifulSoup、lxml 等。
这些库可以帮助我们解析HTML或XML格式的文档,提取出标签或特定的内容。
通过使用这些库,我们可以快速而准确地定位和提取所需的数据,避免手动操作的繁琐和错误。
三、数据抓取一旦完成网页解析,我们就可以开始进行数据抓取了。
Python提供了多种方式来发送HTTP请求,如使用标准库中的urllib或第三方库中的requests。
通过发送GET或POST请求,我们可以模拟浏览器访问网页,并获取返回的数据。
在数据抓取过程中,我们还可以设置一些请求头信息,如User-Agent、Cookie等,以模拟不同的用户行为和获取更精确的数据。
四、数据处理和存储一旦获取到所需的数据,我们就可以进行进一步的处理和存储了。
Python提供了丰富的数据处理库和函数,如pandas、NumPy等。
这些库可以帮助我们对数据进行清洗、转换、统计分析等操作,便于后续的数据处理和使用。
同时,我们还可以将数据存储到各种类型的文件或数据库中,如CSV、Excel、MySQL等,方便后续的数据管理和应用。
Python网络爬虫的数据采集与分析案例分享随着互联网的快速发展,数据成为了当今社会的一项重要资源。
而网络爬虫作为一种自动化工具,能够帮助我们从互联网上获取大量的数据,为我们的数据分析提供了很大的便利。
本文将分享几个实际案例,演示如何使用Python网络爬虫进行数据采集与分析。
案例一:天气数据采集与分析在实际生活中,我们经常需要了解天气情况以便做出相应的安排。
而许多网站提供了天气预报的信息,我们可以使用Python爬虫库来获取这些数据。
通过分析历史天气数据,我们可以揭示出一些有趣的趋势和规律,如某地区的季节性变化、气温变化趋势等。
这些数据可以帮助我们做出更准确的天气预测和决策。
案例二:股票数据采集与分析股票市场一直是人们关注的焦点,而股票数据的采集和分析对于投资者来说尤为重要。
我们可以使用Python爬虫从金融网站获取股票的实时价格、历史数据和相关新闻等信息。
通过分析这些数据,我们可以发现股票价格的波动规律,预测趋势,制定相应的投资策略,提高投资收益。
案例三:舆情数据采集与分析舆情分析是一种通过网络爬虫收集大众言论,并对其进行情感分析和主题分析的方法。
舆情分析可以用于政府决策、企业品牌建设、新闻报道等方面。
我们可以使用Python爬虫从社交媒体平台、论坛等网站上获取公众对某个事件、产品或者品牌的评论和评价。
通过情感分析和主题分析,我们可以了解到大众的看法和反应,为决策提供参考。
案例四:电影数据采集与分析电影作为一种重要的文化载体,一直受到人们的喜爱。
我们可以使用Python爬虫从电影评价网站获取电影的评分、评论、导演等信息。
通过分析这些数据,我们可以了解到观众对于不同类型电影的喜好、各个导演的特点等。
这些信息对于电影业的发展和电影推荐系统的建立都具有重要意义。
综上所述,Python网络爬虫是一种强大的工具,通过它我们能够方便地从互联网上获取各种数据资源。
在数据采集的基础上,我们可以对这些数据进行深入的分析,揭示出一些有价值的信息和规律,为决策和研究提供帮助。
Python数据采集和数据可视化代码一、前言Python作为一种高效、易学且功能强大的编程语言,在数据科学和数据分析领域有着广泛的应用。
数据采集和数据可视化是数据分析过程中的两个重要环节,本文将介绍如何使用Python进行数据采集和数据可视化,为读者提供相关代码和示例。
二、数据采集数据采集是指利用各种技术手段从网络、数据库、文件等数据源中收集数据的过程。
Python提供了许多常用的库和工具,使得数据采集变得简单而高效。
下面我们将介绍几种常用的数据采集技术,并给出相应的Python代码示例。
1. 网络数据采集利用Python的requests库可以方便地进行网络数据采集。
以下是一个简单的示例,演示了如何使用requests库获取网页内容。
```pythonimport requestsurl = 'xxxresponse = requests.get(url)content = response.textprint(content)```2. 数据库数据采集Python的SQLAlchemy库和pandas库可以很好地支持数据库数据的采集和处理。
下面是一个使用pandas库从数据库中读取数据的示例。
```pythonimport pandas as pdfrom sqlalchemy import create_engineengine =create_engine('mysql://user:passwordhost:port/database')query = 'SELECT * FROM table'df = pd.read_sql(query, con=engine)print(df)```3. 文件数据采集Python的pandas库和csv库可以帮助我们处理各种类型的文件数据。
以下是一个使用pandas库读取CSV文件的示例。
```pythonimport pandas as pdfilename = 'data.csv'df = pd.read_csv(filename)print(df)```三、数据可视化数据可视化是指利用图表、图形等视觉化手段展示数据的过程。
Python网络爬虫中的社交媒体数据采集与分析社交媒体在当今社会中扮演着重要的角色,它不仅连接着人与人之间的关系,还成为了商业和营销等领域中不可忽视的资源。
为了了解用户的行为、喜好和需求,采集和分析社交媒体数据变得尤为重要。
本文将介绍如何使用Python编写网络爬虫来实现社交媒体数据的采集与分析。
一、数据采集社交媒体平台上的数据爬取需要遵守相关的政策和法规,确保数据的合法性和隐私保护。
在进行数据采集之前,首先需要明确采集目标,确定需要获取的数据类型和来源。
1.1 数据采集目标根据分析需求,确定需要采集的社交媒体平台,比如微博、Twitter、Facebook等。
不同平台的数据结构和接口可能不同,需要根据具体情况进行针对性的编写。
1.2 网络爬虫编写Python提供了丰富的网络爬虫库,比如BeautifulSoup、Scrapy等。
根据社交媒体平台的API或者网页结构,编写相应的爬虫程序进行数据抓取。
在进行网络爬虫编写时,需要注意爬虫的速度和频率,避免给服务器造成过大的负担。
1.3 数据存储采集到的数据可以存储在数据库(如MySQL、MongoDB)中,也可以保存为文本文件(如CSV、JSON格式)。
根据实际需求选择合适的存储方式,并设计相应的数据库表结构。
二、数据分析数据采集完成后,接下来需要对采集到的数据进行分析和挖掘。
根据分析目标和需求,可以使用Python中的各种数据分析库进行处理。
2.1 数据清洗由于网络爬虫采集的数据可能存在缺失、重复、噪音等问题,需要进行数据清洗工作。
使用Python的pandas库可以对数据进行清洗、去重、填充缺失值等处理。
2.2 数据可视化数据可视化是将分析结果以图表的形式展现出来,更直观地传递信息。
Python中的matplotlib和seaborn库可以用于生成各种图表,如折线图、柱状图、饼图等。
通过可视化可以更好地理解数据,并发现其中的规律和趋势。
2.3 文本分析社交媒体数据中包含大量的文本信息,如用户发布的微博、推文等。
Python网络爬虫的数据爬取与电商数据分析案例近年来,随着互联网的迅猛发展,电商行业呈现出蓬勃的发展态势。
而对于电商企业来说,掌握市场信息和竞争对手的数据已经变得尤为重要。
为了获取准确、全面的数据,许多电商企业开始使用Python网络爬虫技术进行数据采集。
本文将介绍Python网络爬虫的数据爬取方法,并通过一个电商数据分析案例加以实践。
一、数据爬取数据爬取是网络爬虫的核心功能之一,Python作为目前广泛应用于Web开发和数据处理的编程语言,拥有丰富的网络爬取库和工具,使得数据爬取变得更加高效和便捷。
本文将以Python中的requests和beautifulsoup库为例,介绍数据爬取的具体步骤。
1. 网页请求在爬取数据之前,需要使用requests库向目标网页发送HTTP请求,获取网页的源代码。
通过指定URL、请求头和参数等信息,可以方便地模拟浏览器发送请求,并接收到返回的响应数据。
2. 数据解析对于爬取到的网页源代码,通常需要使用beautifulsoup库进行数据解析。
beautifulsoup是一个强大的HTML和XML解析库,可以帮助我们方便地提取出所需的数据。
通过beautifulsoup提供的各种方法和选择器,可以轻松地定位和提取网页中的各种元素和数据。
3. 数据存储在完成数据爬取和解析后,需要将获取到的数据进行存储。
这里可以选择将数据保存在本地文件中,或者将数据存储在数据库中,以供后续的数据分析使用。
二、数据分析案例在电商数据分析中,我们通常会关注商品的销售情况、顾客的购买行为以及竞争对手的动态等。
本文将通过一个电商数据分析案例,帮助读者更好地理解和运用Python网络爬虫技术。
假设我们要分析某电商平台上某品类商品的价格分布情况以及与竞争对手的价格差异。
以下是我们的具体步骤:1. 网站选择和数据爬取首先,需要选择一个适合的电商网站,并使用Python网络爬虫技术获取所需商品的相关数据。
python抓数据的方法
Python有多种方法可以用来抓取数据,具体取决于你要抓取的
数据类型和来源。
以下是一些常见的方法:
1. 使用Requests库,Requests是Python中一个简单而优雅
的HTTP库,可以用来发送HTTP请求并获取数据。
你可以使用Requests库发送GET或POST请求来抓取网页数据,然后使用BeautifulSoup或其他解析库来提取所需的信息。
2. 使用Selenium库,如果你需要抓取动态生成的网页内容,
可以使用Selenium库来模拟浏览器行为,如点击按钮、填写表单等
操作,然后获取页面数据。
3. 使用API,许多网站提供API接口,允许你以编程方式获取
其数据。
你可以使用Python的requests库来发送API请求,并处
理返回的JSON或XML数据。
4. 使用Scrapy框架,Scrapy是一个强大的Python爬虫框架,它提供了许多功能来简化网页抓取的过程,包括自动处理页面解析、数据提取和存储等。
5. 使用第三方数据提供商的SDK,一些数据提供商提供了Python SDK,允许你通过他们的接口直接获取数据,而无需编写自己的抓取逻辑。
总之,Python具有丰富的库和框架,可以满足各种数据抓取需求。
选择合适的方法取决于你要抓取的数据类型、网站结构以及个人偏好。
在实际操作中,你可能需要结合多种方法来完成数据抓取任务。
1.BeautifulSoup简介from urllib.request import urlopenfrom bs4 import BeautifulSouphtml = urlopen('')#打开一个网址bsObj = BeautifulSoup(html.read(),'html.parser')#建立了一个美丽汤对象,以网页内容为参数#调用html.read获取网页的HTML内容#这样就可以把HTML内容传到美丽汤对象print (bsObj.h1) #提取h1标签导入urlopen,然后调用html.read()获取网页的HTML内容,这样就可以把HTML内容传到BeautifulSoup对象用bsObj.h1从对象里提取h1标签任何HTML文件的任意节点的信息都可以被提取出来处理异常html = urlopen('/pages/page1.html')这一句可能出现两种异常:网页在服务器上不存在(提取网页时出现错误)——返回HTTP错误,urlopen函数抛出HTTPError异常处理:try:html = urlopen('/pages/page1.html') except HTTPError as e:print(e)#返回空值,中断程序,或者执行另一个方案else:#程序继续服务器不存在(连接打不开、写错了),urlopen就会返回一个None对象,可以增加一个判断语句检测返回的html是不是None:if html is None:print(‘URL is not found’)else:#程序继续第一个爬虫:from urllib.request import urlopenfrom urllib.error import HTTPError,URLErrorfrom bs4 import BeautifulSoupdef getTitle(url):try:html = urlopen(url)except (HTTPError,URLError) as e:return Nonetry:bsObj = BeautifulSoup(html.read(),'html.parser')title = bsObj.html.head.titleexcept AttributeError as e:return Nonereturn titletitle = getTitle('https:///#signin')if title == None:print('title could not be found')else:print(title)2.复杂HTML解析/pages/warandpeace.html抓出整个页面,然后创建一个BeautifulSoup对象:from urllib.request import urlopenfrom bs4 import BeautifulSouphtml = urlopen(‘/pages/warandpeace.html’)bsObj = BeautifulSoup(html)通过BeautifulSoup对象,可以用findAll函数抽取只包含在某个标签里的文字,如:namelist = bsObj.findAll(‘span’,{‘class’:’green’})for name in namelist:print(name.get_text())#得到一个包含人物名称的Python列表find()与findAll()函数findAll(tag,attributes,recursive,text,limit,keywords)find(tag, attributes,recursive,text,keywords)tag——传一个或多个标签的名称组成的列表做标签函数,例如:.findAll({‘h1’,’h2’,’h3’,’h4’,’h5’})attributes——用一个Python字典封装一个标签的若干属性和对应的属性值,例如:.findAll(‘span’,{‘class’:{‘green’,’red’}} #返回红色与绿色的span标签text——用标签的文本内容去匹配,例如:namelist = bsObj.findAll(text = ‘the prince’)print(len(namelist))其他BeautifulSoup对象BeautifulSoup对象标签tag对象NavigableString对象Comment对象导航树1.处理子标签和其他后代标签children()函数和descendants()函数如果只想找出子标签,可以用.children标签from urllib.request import urlopenfrom bs4 import BeautifulSouphtml = urlopen(‘/pages/warandpeace.html’)bsObj = BeautifulSoup(html)for child in bsObj.find(‘table’,{‘id’:’giftlist’}).children:print(child)2.处理兄弟标签next_siblings()函数可以让手机表格数据成为简单的事情for sibling in bsObj.find(‘table’,{‘id’:’giftlist’}).tr.next_siblings:print(sibling)#这段代码会打印产品列表里所有行的产品(表格标题除外,自己不能是自己的兄弟)3.父标签处理parent和parents正则表达式和BeautifulSoup获取属性对于一个标签对象,可以用下面的代码获取它的全部属性:myTag.attrs要注意这行代码返回的是一个Python对象,可以获取和操作这些属性,例如要获取图片的资源位置src,可以使用:myImgTag.attrs[‘src’]Lambda表达式例如:soup.findAll(lambda tag: len(tag.attrs) == 2)3.开始采集遍历单个域名获取维基百科网站的任何页面并提取页面链接的Python代码:from urllib.request import urlopenfrom bs4 import BeautifulSouphtml = urlopen("")bsObj = BeautifulSoup(html)for link in bsObj.findAll("a"):if 'href' in link.attrs:print(link.attrs['href'])会包含一些不需要的链接,例如侧边栏页面页脚链接指向词条页面的链接的共同点:它们都在id是bodyContent的div标签里,URL链接不含冒号,URL链接可能都有共同的开头,。
因此可以改成for link in bsObj.find("div",{"id":"bodyContent"}).findAll("a",href=pile("^(/wiki/)((?!:).)*$"))from urllib.request import urlopenfrom bs4 import BeautifulSoupimport datetimeimport randomimport rerandom.seed(datetime.datetime.now())def getLinks(articleUrl):html = urlopen(""+articleUrl)bsObj = BeautifulSoup(html)return bsObj.find("div",{"id":"bodyContent"}).findAll("a",href = pile("^(/wiki/)((?!:).)*$"))links = getLinks("/wiki/Kevin_Bacon")while len(links) > 0:newArticle = links[random.randint(0,len(links)-1)].attrs["href"] print(newArticle)links = getLinks(newArticle)采集整个网站from urllib.request import urlopenfrom bs4 import BeautifulSoupimport repages = set()def getLinks(pageUrl):global pageshtml = urlopen(""+pageUrl)bsObj = BeautifulSoup(html)for link in bsObj.findAll("a",href = pile("^(/wiki/)")):if 'href' in link.attrs:if link.attrs['href'] not in pages:#我们遇到了新的页面newPage = link.attrs['href']print(newPage)pages.add(newPage)getLinks(newPage)getLinks("")一开始,用getLinks处理一个空URL,其实是维基百科的主页,因为在函数里空URL就是。
然后,遍历首页上每个链接,并检查是否已经在全局变量集合pages里面了(已经采集的页面集合)。
如果不在,就打印到屏幕上,并把链接加入pages集合,再用getLinks递归的处理这个链接。
收集整个网站数据from urllib.request import urlopenfrom bs4 import BeautifulSoupimport repages = set()def getLinks(pageUrl):global pageshtml = urlopen("g"+pageUrl)bsObj = BeautifulSoup(html)try:print(bsObj.h1.get_text())print(bsObj.find(id="mw-content-text").findAll("p")[0])print(bsObj.find(id="ca-edit").find("span").find("a").attrs['hef'])except AttributeError:print("页面缺少一些属性,不过不用担心")for link in bsObj.findAll("a",href=pile("^(/wiki/)")):if 'href' in link.attrs:if link.attrs['href'] not in pages:#我们遇到了新页面newPage = link.attrs['href']print("---------\n"+newPage)pages.add(newPage)getLinks(newPage)getLinks("")这个for循环和原来的采集程序基本上是一样的(除了打印一条虚线来分离不同的页面内容之外)。