【发布时间】:2018-01-29 13:52:11
【问题描述】:
我对编程和 OO 编程尤其陌生。尽管如此,我正在尝试编写一个非常简单的网络爬虫蜘蛛。这是我的第一种方法:
我需要从这个页面获取数据:http://europa.eu/youth/volunteering/evs-organisation_en
首先,我查看页面源代码以查找 HTML 元素? view-source:https://europa.eu/youth/volunteering/evs-organisation_en
注意:我需要获取此行正下方的数据:
EVS 认证组织搜索结果:6066
我为这份工作选择了漂亮的汤——因为它非常强大:
我使用 find_all:
soup.find_all('p')[0].get_text() # Searching for tags by class and id
注意:CSS 使用类和 ID 来确定将某些样式应用于哪些 HTML 元素。我们也可以在抓取时使用它们来指定我们想要抓取的特定元素。
查看课程:
<div class="col-md-4">
<div class="vp ey_block block-is-flex">
<div class="ey_inner_block">
<h4 class="text-center"><a href="/youth/volunteering/organisation/935175449_en" target="_blank">"People need people" Zaporizhya oblast civic organisation of disabled families</a></h4>
<p class="ey_info">
<i class="fa fa-location-arrow fa-lg"></i>
Zaporizhzhya, <strong>Ukraine</strong>
</p> <p class="ey_info"><i class="fa fa-hand-o-right fa-lg"></i> Sending</p>
<p><strong>PIC no:</strong> 935175449</p>
<div class="empty-block">
<a href="/youth/volunteering/organisation/935175449_en" target="_blank" class="ey_btn btn btn-default pull-right">Read more</a> </div>
</div>
所以这导致:
# import libraries
import urllib2
from bs4 import BeautifulSoup
page = requests.get("https://europa.eu/youth/volunteering/evs-organisation_en")
soup = BeautifulSoup(page.content, 'html.parser')
soup
现在,我们可以使用 find_all 方法按类或 id 搜索项目。在下面的示例中,我们将搜索任何具有类 external-text
的 p 标签<div class="col-md-4">
所以我们选择:
soup.find_all(class_="col-md-4")
现在我必须合并所有。
更新:我的方法:到目前为止:
我使用 BeautifulSoup4 从网页中提取了包含在多个 HTML 标记中的数据。我想将所有提取的数据存储在一个列表中。而且 - 更具体地说:我希望每个提取的数据都作为单独的列表元素,用逗号分隔(即 CSV 格式)。
从头开始:
这里我们有 HTML 内容结构:
<div class="view-content">
<div class="row is-flex"></span>
<div class="col-md-4"></span>
<div class </span>
<div class= >
<h4 Data 1 </span>
<div class= Data 2</span>
<p class=
<i class=
<strong>Data 3 </span>
</p> <p class= Data 4 </span>
<p class= Data 5 </span>
<p><strong>Data 6</span>
<div class=</span>
<a href="Data 7</span>
</div>
</div>
要提取的代码:
for data in elem.find_all('span', class_=""):
这应该给出一个输出:
data = [ele.text for ele in soup.find_all('span', {'class':'NormalTextrun'})]
print(data)
输出: ['数据1'、'数据2'、'数据3'等等]
问题:/我需要提取部分的帮助...
【问题讨论】:
-
那么,问题是什么?您需要哪方面的帮助?
-
您好,亲爱的 Keyur - 坦率地说:我是 Python /& BS 初学者,我只有一些教程 - 背景。如果你能在接下来的步骤中伸出援助之手,我必须完成和做。我需要一种方法。你能帮我帮忙吗 - 我可以继续... - 很高兴收到你的来信 - 马拉加
-
你说
now i have to combine all.。你能准确解释你想做什么吗?在您提供 MCVE 后,SO 上的人们会很乐意为您提供帮助。阅读-How to create a Minimal, Complete, and Verifiable example。另外,如果我忽略了某些内容而没有得到您的确切问题,我深表歉意。 -
亲爱的 Keyur - 再次非常感谢。我添加了一些内容并尝试提供一个最小的完整且可验证的示例。换句话说:我试图收集我所拥有的一切,以便我们可以讨论这种方法。如果您可以仔细查看部分数据 - 使用 BS4 进行提取,我会非常高兴。 - 亲切的问候马拉加
-
亲爱的马拉加 - 你必须听到 keyur - 我认为他是完全正确的。你得让我们看看你想解析的源代码
标签: python beautifulsoup