Python bs4:在一系列页面上循环&;按类将元素收集到csv输出中

Python bs4:在一系列页面上循环&;按类将元素收集到csv输出中,python,csv,web-scraping,beautifulsoup,Python,Csv,Web Scraping,Beautifulsoup,我正试图从一个站点中获取一小块信息:获取数据并将其存储在CSV数据集中。项目:有关城市和村庄社区服务和官方帮助台的联系数据列表:-1600条记录 基本站点: Hausanschrift: - name - street & housenumber - postal code & town Kontaktmöglichkeiten: - telehon - fax - e-mail - internet 详情页面:Rathaus[Gemeinde Grünkraut

我正试图从一个站点中获取一小块信息:获取数据并将其存储在CSV数据集中。项目:有关城市和村庄社区服务和官方帮助台的联系数据列表:-1600条记录

基本站点:

Hausanschrift: 
- name 
- street & housenumber
- postal code & town 


Kontaktmöglichkeiten:
- telehon
- fax
- e-mail 
- internet 
详情页面:Rathaus[Gemeinde Grünkraut]

注:我们大约有1600页。。所以其中一个主要问题是-如何将他们聚集到节目中。。。如何在包含数据的所有页面上循环

<div class="sp-m-organisationseinheitDetails-basisInfos-content sp-l-grid-container"> 
<div class="sp-l-grid-row"> 
<div class="sp-l-grid-col-md-6 sp-l-grid-col-sm-6 sp-l-grid-xs-col-12"> 
<div> <div itemprop="address" itemscope="itemscope" itemtype="http://schema.org/PostalAddress" class="sp-m-organisationseinheitDetails-basisInfos-addressBlock"> 
<h4 class="sp-m-organisationseinheitDetails-basisInfos-detailsTitle mdash">Hausanschrift</h4> 
<div itemprop="streetAddress"> <span>Scherzachstr.</span> <span>2</span><br> 
在图像中查看每个记录中的信息块-在1600多个记录中的每个记录中…:

我的方法

import requests
from bs4 import BeautifulSoup
from concurrent.futures.thread import ThreadPoolExecutor

url = "https://www.service-bw.de/web/guest/trefferliste/-/trefferliste/q-rathaus{}"


def main(url, num):
    with requests.Session() as req:
        print(f"Collecting Page# {num}")
        r = req.get(url.format(num))
        soup = BeautifulSoup(r.content, 'html.parser')
        link = [item.get("href")
                for item in soup.findAll("a", rel="bookmark")]
        return set(link)


with ThreadPoolExecutor(max_workers=20) as executor:
    futures = [executor.submit(main, url, num)
               for num in [""]+[f"page/{x}/" for x in range(2, 50)]]

allin = []
for future in futures:
    allin.extend(future.result())


 soup = BeautifulSoup(r.content, 'html.parser')
        target = [item.get_text(strip=True, separator=" ") for item in soup.find(
            "h4", class_="sp-m-organisationseinheitDetails-basisInfos-content sp-l-grid-container").find_next("ul").findAll("dd itemprop")[:8]]
        head = [soup.find("h4", class_="plugin-title").text]
        new = [x for x in target if x.startswith(
            ("Telefon", "Fax", "E-Mail", "Internet"))]
        return head + new


with ThreadPoolExecutor(max_workers=50) as executor1:
    futures1 = [executor1.submit(parser, url) for url in allin]

for future in futures1:
    print(future.result())
顺便说一句,也许我们能够获得更进一步的(额外的内容)-但目前我试图弄清楚如何获得页面并对其进行一般解析的基本掌握

我被卡住的地方:我得到错误:
文件“C:\Users\Kasper\Documents\u f\u s\u j\u mk\u dev\ubs\bw.py”,第28行target=[item.get\u text(strip=True,separator=”“)用于汤中的项目。查找(^indicationError:意外缩进[在0.32s内完成]
但除此之外,我怀疑整个代码运行良好,并获取了所有需要的项目

也许你能给我一个提示并给我一些指导..提前谢谢。

导入请求
从bs4导入BeautifulSoup
从concurrent.futures.thread导入ThreadPoolExecutor
从色彩、风格
req=请求。会话()
参数={
“p_p_id”:“suchergebnisse_WAR_suchegui”,
“p_p_生命周期”:“2”,
“p_p_状态”:“正常”,
“p_p_模式”:“查看”,
“p_p_资源id”:“下一个”,
“p_p_可缓存性”:“cacheLevelPage”,
“p_p_col_id”:“第1列”,
“p_p_col_count”:“1”
}
数据={
“q”:”
}
def汤(内容):
soup=BeautifulSoup(内容为“html.parser”)
target=[item['href']
对于汤中的项目。选择(“a[id^=OrganizationSeinheit]”)
返回目标
def主(url):
r=req.get(url)
URL=soup(r.content)
打印(“提取第1页”)
返回URL
go=主(“https://www.service-bw.de/web/guest/trefferliste/-/trefferliste/q-rathaus")
def秒(url):
链接=[]
对于范围(1166)内的页面:
打印(f“提取页面{Page+1}”)
r=req.get(url,
参数=参数,数据=数据)
URL=soup(r.content)
links.extend(URL)
返回链接
allin=前进+秒(“https://www.service-bw.de/web/guest/trefferliste")
打印(f“捕获的{len(allin)}链接”)
def第三(url):
r=req.get(url)
parser=BeautifulSoup(r.content'html.parser')
打印(url)
尝试:
part1=[parser.find中项的item.text(“div”,itemprop=“streetAddress”).parent.findAll(
“span”,text=True)]
除属性错误外:
第1部分=[“不适用”]
尝试:
part2=[item.text用于parser.select中的项(
“dd.sp-l-grid-col-md-7”)[:4]]
除属性错误外:
第2部分=[“不适用”]
光洁度=零件1+零件2
返回终点
使用ThreadPoolExecutor(最大工作线程数=30)作为执行器:
futures=executor.map(第三,allin)
对于未来:
打印(f“{Fore.GREEN}{future}{Style.RESET_ALL}”)

实际问题是什么?您粘贴的程序是否正常工作?您好,亲爱的Andrej-非常感谢您的回复-很高兴收到您的回复-我收到错误文件“C:\Users\Kasper\Documents\u f\u s\u mk\u dev\ubs\bw.py”,第28行target=[item.get\u text(strip=True,separator=“”)用于汤中的项目。查找(^indicationError:unexpected缩进[在0.32s内完成]`但除此之外,我怀疑整个代码运行良好,并获取了所有想要的项目。我目前正在尝试调试这些东西-我很高兴收到您的提示和提示。-提前感谢。您可以编辑您的问题并在那里发布错误代码吗?(格式正确)您好,亲爱的Andrej-非常感谢我会这么做。我只是想在评论中正确地编辑一下,即使用‘’或‘。但是现在-首先,我编辑问题并添加我回到那里的代码。非常感谢您的鼓励和帮助,这有助于我继续脚手架帮助和方法-这对我很有帮助uestion是不清楚的,没有理由地长。即使你没有包括你想要的输出@zero@αԋɱҽαМєιcαη-非常感谢你。这比预期的要多-非常棒,令人印象深刻。再次非常感谢你-祝你有一个美好的一天。-问候zero;)