如果以前的元素是x,请返回

发布于 2025-02-01 10:25:24 字数 1255 浏览 1 评论 0 原文

我需要为此页面构建一个网络剪贴工具:

我已经弄清楚了如何通过使用 present_sibling “vyvěšeno” “ sejmuto” /code>,但是现在我需要将所有divs(分为一个变量)。我认为有些陈述会有所帮助。

有时有1个,有时在上方最多3个div。

来自我当前数组的示例:

['11.\xa0veřejné zasedání zastupitelstva obce se uskuteční 21.\xa012.\xa02011 v\xa019.30\xa0v\xa0budově obecního\xa0úřadu.', 'Vyvěšeno: 13. 12. 2011', 'Sejmuto: 21. 12. 2011']

代码:

from bs4 import BeautifulSoup
import requests
import re
from csv import writer

url= "https://www.valchov.cz/sluzby/specialni-sluzby-/"
page = requests.get(url)

soup = BeautifulSoup(page.content, "html.parser")
sejmuto = soup.find_all("p", string=re.compile("Sejmuto:"))

with open("listings.csv", "w", encoding="utf8") as f:
    thewriter = writer(f)
    header= ["Name", "Name bezdiakritikyamezer" , "URL", "Zveřejněno", "Sejmuto"]
    thewriter.writerow(header)

for hhh in sejmuto:
    item1 = hhh.previous_sibling.previous_sibling.text
    itemz = hhh.previous_sibling.previous_sibling.previous_sibling.previous_sibling.text
    item2 = (hhh.text)
    item = [itemz, item1, item2]
    print(item)

I need to build a web-scraping tool for this page: https://www.valchov.cz/sluzby/specialni-sluzby-/

I already figured out how to get the "Vyvěšeno" and "Sejmuto" by using previous_sibling, but now I need to get all the divs(into one variable). I think some if statement would help.

There are sometimes 1 and sometimes up to 3 divs above.

Sample from my current array:

['11.\xa0veřejné zasedání zastupitelstva obce se uskuteční 21.\xa012.\xa02011 v\xa019.30\xa0v\xa0budově obecního\xa0úřadu.', 'Vyvěšeno: 13. 12. 2011', 'Sejmuto: 21. 12. 2011']

Code:

from bs4 import BeautifulSoup
import requests
import re
from csv import writer

url= "https://www.valchov.cz/sluzby/specialni-sluzby-/"
page = requests.get(url)

soup = BeautifulSoup(page.content, "html.parser")
sejmuto = soup.find_all("p", string=re.compile("Sejmuto:"))

with open("listings.csv", "w", encoding="utf8") as f:
    thewriter = writer(f)
    header= ["Name", "Name bezdiakritikyamezer" , "URL", "Zveřejněno", "Sejmuto"]
    thewriter.writerow(header)

for hhh in sejmuto:
    item1 = hhh.previous_sibling.previous_sibling.text
    itemz = hhh.previous_sibling.previous_sibling.previous_sibling.previous_sibling.text
    item2 = (hhh.text)
    item = [itemz, item1, item2]
    print(item)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

欢你一世 2025-02-08 10:25:24

问题和预期的输出并不清楚,但假设您的目标是获取所有链接并应用相应的日期,我将指定以这种方式调整您的脚本:

  1. 您不需要额外的 re re 模型改为使用 CSS选择器

      soup.Select('P:-soup-Contains(“ Sejmuto”)')
     
  2. 选择并迭代所有 find_previous_siblings(),检查它是否包含<<代码>&lt; a&gt; 并将您的行写入CSV else break for for for for loop并继续:

      for e.find_previous('p')中的PS。find_previous_siblings():
        如果Ps.a:
            名称= ps.a.text
            url = ps.a.get('href')
            zve = e.find_previous('p')。text.split(':')[ -  1]
            sej = e.text.split('sejmuto')[-1] .Strip('。:')
            项目= [名称,URL,ZVE,SEJ]
            Writer.Writerow(item)
    
        Elif'P晚
            继续
        别的:
            休息
     

注意/strong> 有一些不规则且不正确的拼写 /标点符号(“:”,“。”或其中没有)< /

url
from bs4 import BeautifulSoup
import requests
from csv import writer

url= "https://www.valchov.cz/sluzby/specialni-sluzby-/"
page = requests.get(url)

soup = BeautifulSoup(page.content, "html.parser")


with open("listings.csv", "w", encoding="utf8") as f:
    thewriter = writer(f)
    header= ["Name", "URL", "Zveřejněno", "Sejmuto"]
    thewriter.writerow(header)

    for e in soup.select('p:-soup-contains("Sejmuto")'):
        for ps in e.find_previous('p').find_previous_siblings():
            if ps.a:
                name = ps.a.text
                url = ps.a.get('href')
                zve = e.find_previous('p').text.split(':')[-1]
                sej = e.text.split('Sejmuto')[-1].strip('.:')
                item = [name, url, zve, sej]
                thewriter.writerow(item)

            elif 'Přílohy' in ps.text:
                continue
            else:
                break
>
名称 zve 示例 em
输出 a href =“ https://valchov.webnode.cz/_files/200212352-b8a6db8a6f/zpr%C3%A1VA%20O%20O%20V%C3%BDSLEDKU; 202021%20ANONYM.PDF?_GA = 2.254591048.1500514720.1653284487-1038960091.1606374959“ rel =” nofollow noreflow norefloll noreferrer“ ZPR%C3%A1VA%20O%20V%C3%BDSLEDKU %20P%C5%99EZKUMU%20HOSPODA%C5%C5%C3%AD%202021%20ANONYM.PDF? účtuSvazkuObcíBoskovickoZa rok
2021 efteri
HospodaùeníZaRok 2021 DSOTechnickéSlužbybyMaláHuná https://valchov.webnode.cz/_files/20021212121212121212121212121212121212345-6733c6733c6733d/zpr%C3%CC3%A1VA%20O20O20V或20p%C5%99EZKOUM%C3%A1N%C3%C3%AD%20HOSPODA%C5%C5%99en%C3%C3%AD% 20ANONYM.PDF
23.5.2022NávrhZávrhZávěrečnéhočtuZtuza =” 8DTU%20DSO%20V%20V%C3%A9M%20REZSAHU.PDF“ rel =” nofollow noreferrer“> https://valchov.webnode.cz/_files/_files/2002121212344-6Bf056bf056bf08/n/n/n/n/n/nn/nn/nn/ndmcc3 a2 vrh%A1.a1vrh%A1Vrh; %C4%9倍%C4%8DN%C3%A9HO%20%C3%BA%C4%C4%8DTO%20DSO%20V%20V%20PLN%C3%a9m%20ROZSAHU.PDF 23.5。2022222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
。 8 -výkazprohodnoceníplněnírozpočtuObceobce valchov v roce 2021 https://valchov.webnode.cz/_files/2002121212121212342-85AD885ADA/p%C5%99%C3%C3%C3%ADLOHA%20%20%C4%C4%C4%C4%8D.M C3%AD%20PLN%C4%9BN%C3%AD%20REZPO%C4%8DTU%20BEC%20VALCHOV%20V%20DRECE%202021.PDF? 2 30 。 6。2022P
晚。 7 -p游动力 HREF =“ https://valchov.webnode.cz/_files/20021212341-C798FC7991/P%C5%99%C3%C3%Adloha; C3%ADLOHA%20M%C5%A0%20VALCHOV_2021.PDF?_GA = 2.213369044.1500514720.165328487-10389660091.1606374959“ 212341-C798FC7991/P%C5%99 %C3%ADloha%20%C4%8D.%207_P%C5%99%C3%ADloha%20M%C5%A0%20Valchov_2021.pdf?_ga=2.213369044.1500514720.1653284487-1038960091.1606374959 23. 5. 2022 30. 6。2022P
晚。 6 -RozvahaMšValchov2021 < /aouth。202222222222222222222222222222022220222.2022p
. 5 -VýkazZisku aZtrátyMšValchov2021 23.5.2022 30. 6. 2022

...

Question and expected output is not that clear but assuming, that your goal is to get all the links and apply corresponding dates I would reccomend to adjust your script that way:

  1. You do not need extra re modul instead use css selectors:

    soup.select('p:-soup-contains("Sejmuto")')
    
  2. Select and iterate all find_previous_siblings(), check if it contains a <a> and write your row to csv else break the for loop and continue:

    for ps in e.find_previous('p').find_previous_siblings():
        if ps.a:
            name = ps.a.text
            url = ps.a.get('href')
            zve = e.find_previous('p').text.split(':')[-1]
            sej = e.text.split('Sejmuto')[-1].strip('.:')
            item = [name, url, zve, sej]
            thewriter.writerow(item)
    
        elif 'Přílohy' in ps.text:
            continue
        else:
            break
    

Note There are some irregular and incorrect spellings / punctuation (":","." or no of these)

Example
from bs4 import BeautifulSoup
import requests
from csv import writer

url= "https://www.valchov.cz/sluzby/specialni-sluzby-/"
page = requests.get(url)

soup = BeautifulSoup(page.content, "html.parser")


with open("listings.csv", "w", encoding="utf8") as f:
    thewriter = writer(f)
    header= ["Name", "URL", "Zveřejněno", "Sejmuto"]
    thewriter.writerow(header)

    for e in soup.select('p:-soup-contains("Sejmuto")'):
        for ps in e.find_previous('p').find_previous_siblings():
            if ps.a:
                name = ps.a.text
                url = ps.a.get('href')
                zve = e.find_previous('p').text.split(':')[-1]
                sej = e.text.split('Sejmuto')[-1].strip('.:')
                item = [name, url, zve, sej]
                thewriter.writerow(item)

            elif 'Přílohy' in ps.text:
                continue
            else:
                break
Output
Name URL Zveřejněno Sejmuto
Zpráva o výsledku přezkumu hospodaření Svazku obcí Boskovicko za rok 2021 https://valchov.webnode.cz/_files/200212352-b8a6db8a6f/Zpr%C3%A1va%20o%20v%C3%BDsledku%20p%C5%99ezkumu%20hospoda%C5%99en%C3%AD%202021%20anonym.pdf?_ga=2.254591048.1500514720.1653284487-1038960091.1606374959 23. 5. 2022
Návrh Závěrečného účtu Svazku obcí Boskovicko za rok 2021 https://valchov.webnode.cz/_files/200212351-4d5044d506/n%C3%A1vrh%20Z%C3%9A%20Svazku%20obc%C3%AD%20Boskovicko%202021%20v%20pln%C3%A9m%20rozsahu.pdf?_ga=2.250537158.1500514720.1653284487-1038960091.1606374959 23. 5. 2022
Zpráva z přezkumu hospodaření za rok 2021 DSO Technické služby malá Haná https://valchov.webnode.cz/_files/200212345-6733c6733d/Zpr%C3%A1va%20o%20v%C3%BDsledku%20p%C5%99ezkoum%C3%A1n%C3%AD%20hospoda%C5%99en%C3%AD%20anonym.pdf 23. 5. 2022
Návrh závěrečného účtu za rok 2021 DSO Technické služby Malá Haná https://valchov.webnode.cz/_files/200212344-6bf056bf08/n%C3%A1vrh%20z%C3%A1v%C4%9Bre%C4%8Dn%C3%A9ho%20%C3%BA%C4%8Dtu%20DSO%20v%20pln%C3%A9m%20rozsahu.pdf 23. 5. 2022
Příloha č. 8 - Výkaz pro hodnocení plnění rozpočtu obce Valchov v roce 2021 https://valchov.webnode.cz/_files/200212342-85ad885ada/P%C5%99%C3%ADloha%20%C4%8D.%208_V%C3%BDkaz%20pro%20hodnocen%C3%AD%20pln%C4%9Bn%C3%AD%20rozpo%C4%8Dtu%20obec%20Valchov%20v%20roce%202021.pdf?_ga=2.213369044.1500514720.1653284487-1038960091.1606374959 23. 5. 2022 30. 6. 2022
Příloha č. 7 - Příloha MŠ Vachov 2021 https://valchov.webnode.cz/_files/200212341-c798fc7991/P%C5%99%C3%ADloha%20%C4%8D.%207_P%C5%99%C3%ADloha%20M%C5%A0%20Valchov_2021.pdf?_ga=2.213369044.1500514720.1653284487-1038960091.1606374959 23. 5. 2022 30. 6. 2022
Příloha č. 6 - Rozvaha MŠ Valchov 2021 https://valchov.webnode.cz/_files/200212340-37dd337dd5/P%C5%99%C3%ADloha%20%C4%8D.%206_Rozvah%20M%C5%A0%20Valchov_2021.pdf?_ga=2.213369044.1500514720.1653284487-1038960091.1606374959 23. 5. 2022 30. 6. 2022
Příloha č. 5 - Výkaz zisku a ztráty MŠ Valchov 2021 https://valchov.webnode.cz/_files/200212339-3e3a43e3a6/P%C5%99%C3%ADloha%20%C4%8D.%205_V%C3%BDkaz%20zisku%20a%20ztr%C3%A1ty%20M%C5%A0%20Valchov_2021.pdf?_ga=2.213369044.1500514720.1653284487-1038960091.1606374959 23. 5. 2022 30. 6. 2022

...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文