我需要为这个页面建立一个网页抓取工具: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)
问题和预期输出不是那么清楚,但假设,您的目标是获得所有链接并应用相应的日期,我建议以这种方式调整您的脚本:
您不需要额外的
re
模块,而是使用css selectors
:soup.select('p:-soup-contains("Sejmuto")')
选择并迭代所有
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
注意有一些不规则和不正确的拼写/标点符号(":",";
例子h5>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.1606374959 5. 2022 Ná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.1606374959 5. 2022 Zprá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.pdf 5. 2022 Ná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.pdf 5. 2022 Př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.1606374959 5. 2022 6. 2022 Př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.1606374959 5. 2022 6. 2022 Př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.1606374959 5. 2022 6. 2022 Př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.1606374959 5. 2022 6. 2022 表>
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
相关内容
- 没有找到相关文章
最新更新
- 即使在我执行 commit() 和 autocommit=True 之后,也无法使用 psycopg2 脚本更新 PostgreSQL 表
- 在x秒后在两个函数之间切换
- 从对象数组中提取属性,并通过lodash创建基于此属性的另一个?
- sectionIndexTitles映射不能正常工作
- Apache commons CSVPrinter正在编码双值
- coinex交换API,并使用Curl /BASH来放置市场订单加密对
- 询问直到输入在列表中?
- Cant 将 2D 数组传递给函数 C++
- 如何同步外表和本表?
- 我如何显示另一个实体链接到主一个在html.twig?
- Material UI自动完成列表框样式没有影响
- 数组中的参数类型问题('float', 'const int')
- 编译错误在VS Studio编译Fortran代码
- 无法解析身份验证凭证
- Google Maps API查找详细信息
- 是否有一种方法可以访问npm包内的方法?
- 将类添加到viewport中的元素
- 检查JavaScript变量类型是否有键
- 将动态Github工作流矩阵与输入值和预定义值相结合
- 需要构造一个API列表数组
- jQuery的美元语法与美元符号JavaScript "convention"
- React上下文提供程序的顺序
- 如何在firebase中建立独立的开发环境?
- 特定字符串的正则表达式不工作
- 数字标签 <images> XSLT / XML
- 由catch()保护的Promise返回什么?
- 如何逃避json中的非数组键?
- 在r中粘贴不同的值
- 如何通过映射不使用键?
- 如何四舍五入到最接近的倍数?
热门标签:
javascript python java c# php android html jquery c++ css ios sql mysql arrays asp.net json python-3.x ruby-on-rails .net sql-server django objective-c excel regex ruby linux ajax iphone xml vba spring asp.net-mvc database wordpress string postgresql wpf windows xcode bash git oracle list vb.net multithreading eclipse algorithm macos powershell visual-studio image forms numpy scala function api selenium