如果前一个元素是x,则返回它



我需要为这个页面建立一个网页抓取工具:https://www.valchov.cz/sluzby/specialni-sluzby-/

我已经知道如何通过使用previous_sibling得到"Vyvěšeno""Sejmuto",但现在我需要得到所有的div(到一个变量)。我想一些if语句会有帮助。

有时1个,有时多达3个。

当前数组的示例:

['11.xa0veřejné zasedání zastupitelstva obce se uskuteční 21.xa012.xa02011 vxa019.30xa0vxa0budově obecníhoxa0úř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)

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

  1. 您不需要额外的re模块,而是使用css selectors:

    soup.select('p:-soup-contains("Sejmuto")')
    
  2. 选择并迭代所有find_previous_siblings(),检查它是否包含<a>并将您的行写入csv,否则打破for循环并继续:

    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
    

注意有一些不规则和不正确的拼写/标点符号(":",";

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řejněnoZpráva o výsledku přezkumu hospodaření Svazku obcí Boskovicko za rok 2021https://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.16063749595. 2022Návrh Závěrečného účtu Svazku obcí Boskovicko za rok 2021https://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.16063749595. 2022Zpráva z přezkumu hospodaření za rok 2021 DSO technickslužby malhanhttps://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.pdf5. 2022Návrh závěrečného účtu za rok 2021 DSO technickslužby malinhanhttps://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.pdf5. 2022Přilohač。8 - Výkaz pro hodnocení plnění rozpotu obce Valchov v roce 2021https://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.16063749595. 20226. 2022Přilohač。7- Příloha MŠ Vachov 2021https://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.16063749595. 20226. 2022Přilohač。6 - Rozvaha MŠ Valchov 2021https://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.16063749595. 20226. 2022Přilohač。5 - Výkaz zisku a ztráty MŠ Valchov 2021https://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.16063749595. 20226. 2022

相关内容

  • 没有找到相关文章