gpt4 book ai didi

python - 尝试使用 beautifulsoup 抓取页面,获取大量我想消除的元素数据(我假设)

转载 作者:太空宇宙 更新时间:2023-11-03 15:45:11 24 4
gpt4 key购买 nike

我几乎一切都正常,但是:

当使用 class 获取特定的 div 时,我得到一个对我来说毫无用处的长响应。经过检查,我认为这是因为 div 没有在我需要的信息之后结束。

我正在尝试找出仅获取我想要的数据的正确方法。我知道还有另一种方法可以排除某些数据吗?

代码:

soup = BeautifulSoup(source, "html.parser")
contact_us = soup.find_all("div",{"class" : "contact_us"})

输出是一个只有 1 项的列表,否则我将使用循环方法。

[LINK][1] - 由于可能存在敏感信息,链接已被删除。

编辑:

我想要得到:

公司名称联络人地址:移动的:电话:

最佳答案

标记不太容易使用,但我们可以使用 strong 元素作为我们可以依赖的东西 - 逐一定位 strong 元素,使用它们作为标签和我们可以前进到 next siblings 的东西直到我们遇到另一个 strong 元素或到达终点:

from itertools import takewhile

import requests
from bs4 import BeautifulSoup, Tag

url = "http://www.htavr.com/enquiry.html"
response = requests.get(url)

soup = BeautifulSoup(response.content, "html5lib")
contact_us = soup.select_one(".contact_us")

# remove all br elements to ease parsing
for br in contact_us.find_all("br"):
br.unwrap()

labels = contact_us.find_all("strong")

# first strong element is a business name
business_name = labels[0].get_text()

not_tag = lambda elm: not isinstance(elm, Tag)

# going over all the strong "labels"
for label in labels[1:]:
# extract all next text nodes before the next "strong" element or the end
value = " ".join([text.strip() for text in takewhile(not_tag, label.next_siblings)])

print(label.get_text(strip=True), value)

打印:

Contact Person : <first_and_last_name> (Director)
Address : <address_here>
Mobile : <mobiles_here>
Phone : <telephones_here>
Call Us : <telephone_here>

(从答案中删除敏感信息)

关于python - 尝试使用 beautifulsoup 抓取页面,获取大量我想消除的元素数据(我假设),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41816042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com