BeautifulSoup不会读取标记中的所有元素

2024-10-02 18:20:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我在beautifulSoup中遇到问题,无法在每个标记中找到所有内容。即,对于第3549页,它省略了下图中以蓝色突出显示的所有内容:

image

有趣的是,对于第30页,我没有这个问题

from bs4 import BeautifulSoup
import requests
import time
import pandas as pd

n_pages = 1
for page in range(3549, 3550):
    n_pages += 1
    time.sleep(1)
    outer_link = 'https://www.info-net.com.pl/firmy/pokaz/polska/page:' + str(page)

    response = requests.get(outer_link)

    outer_soup = BeautifulSoup(response.content,'html.parser')
    firmyContainer = outer_soup.find_all('div', attrs={'id':'firmy'})

    for firms in firmyContainer:
       print(firms)

如果您能给我一些有用的提示,告诉我是什么导致了这个问题以及如何解决它,我将不胜感激


Tags: inimport内容fortimeresponsepagelink
2条回答

它工作得很好,你应该花时间去检查这些网站,看看它们之间的差异

示例#1 开放网站:https://www.info-net.com.pl/firmy/pokaz/polska/page:30

Image of firmy

outer_soup.find_all('div', attrs={'id':'firmy'})[0]的输出

<div id="firmy">
    <div id="firmy_g"></div>
    <div id="firmy_m">
        <ol>
            <li id="fir0">
                <h3><a href="/wizytowka/urzad-miasta-w-krosnie-odrzanskim,174430.html" target="_new">URZĄD MIASTA w
                        Krośnie Odrzańskim </a></h3>
                <div class="adres">
                    <p>ul. Parkowa 1</p>
                    <p>66-600 Krosno Odrzańskie</p>
                    <p>lubuskie</p>
                    <p><img src="/images/layout/koperta.png" alt="Adres emailowy"> <a
                            href="mailto:sekretariat@krosnoodrzanskie.pl"
                            title="Napisz emaila do: sekretariat@krosnoodrzanskie.pl">sekretariat@krosnoodrzanskie.pl</a>
                    </p>
                    <p><img src="/images/layout/www.png" alt="Adres www"> <a target="_new"
                            href="http://www.krosnoodrzanskie.pl" title="Przejdź do strony">www.krosnoodrzanskie.pl</a>
                    </p>
                </div>
                <div style="height: 15px;" class="img-shadow"><a
                        href="/wizytowka/urzad-miasta-w-krosnie-odrzanskim,174430.html" target="_new"><img
                            title="URZĄD MIASTA w Krośnie Odrzańskim" class="logo"
                            src="/upload/logo/logo_174430.jpg"></a></div>
                <p><img src="/images/layout/telefon.png" alt="telefon"> 68 383 50 17 centrala</p>
                <p><img src="/images/layout/telefon.png" alt="telefon"> 68 383 51 10</p>
                <p><img src="/images/layout/telefon.png" alt="telefon"> 68 383 52 26</p>
                <p><img src="/images/layout/telefon.png" alt="telefon"> fax 68 383 51 22</p>
                <div style="float:left;clear:both;"></div><span class="opis">
                    <p>Godziny otwarcia Urzędu:<br>poniedziałek: 8:00-16:00, wtorek-piątek: 7:30-15:30</p>
                </span>
                <p class="cardList-company-desc-more">

                    <a target="_new" href="/wizytowka/urzad-miasta-w-krosnie-odrzanskim,174430.html">więcej »</a>

                </p>
                <div style="clear:both;"></div>
            </li>
        </ol>
        <div class="slowa_k">Słowa kluczowe: <h4><a class="slowa" title="urząd miejski"
                    href="/portal/szukaj/urząd miejski">urząd miejski</a></h4>, </div>
        <div class="slowa_k">Branże: <h4><a class="slowa" title="Instytucje, Urzędy, Organizacje"
                    href="/firmy/polska/instytucje-urzedy/administracja-organizacje-urzedy">Instytucje, Urzędy,
                    Organizacje</a></h4>, </div>
    </div>
    <div id="firmy_d"></div>
</div>

示例#2 开放网站:https://www.info-net.com.pl/firmy/pokaz/polska/page:3549

Image of firmy

outer_soup.find_all('div', attrs={'id':'firmy'})[0]的输出

<div id="firmy">
    <div id="firmy_g"></div>
    <div id="firmy_m">
        <ol>
            <li id="fir0">
                <h3><a href="/b/274534">DR-TRUCK </a></h3>
                <div class="adres">
                    <p>al. Żwirki i Wigury 6</p>
                    <p>08-400 Garwolin</p>
                    <p>mazowieckie</p>

                </div>
                <p><img src="/images/layout/telefon.png" alt="telefon"> 508 845 244</p>
                <div style="float:left;clear:both;"></div>
                <p class="cardList-company-desc-more">
                    <a target="_new" href="/b/274534">więcej »</a>
                </p>
                <div style="clear:both;"></div>
            </li>
        </ol>
        <div class="slowa_k">Branże: <h4><a class="slowa" title="Handel samochodami/ Motocyklami, Wypożyczalnie"
                    href="/firmy/polska/motoryzacja-transport-spedycja/motoryzacja-handel-samochodami motocyklami-wypozyczalnie">Handel
                    samochodami/ Motocyklami, Wypożyczalnie</a></h4>, </div>
    </div>
    <div id="firmy_d"></div>
</div>

@MaciekDubaj:无法重现该行为-试图从其他位置获取数据。页面加载非常缓慢,耗时数秒,结果没有您描述的slowa_k。切换到Selenium此行为已修复

含硒溶液

from bs4 import BeautifulSoup
from selenium import webdriver
driver = webdriver.Chrome(executable_path=r'C:\Program Files\ChromeDriver\chromedriver.exe')
URL = 'https://www.info-net.com.pl/firmy/pokaz/polska/page:' + str(3549)

driver.get(URL)
driver.implicitly_wait(5) # wait for seconds

outer_soup = BeautifulSoup(driver.page_source,'html.parser')
firmyContainer = outer_soup.find_all('div', attrs={'id':'firmy'})
        
outer_soup.find_all('div', attrs={'id':'firmy'})[0]

driver.close()

输出

<div id="firmy"><div id="firmy_g"></div><div id="firmy_m"><ol><li id="fir0"><h3><a href="/b/60852">Dr Nauk Med. Spec. Dermatolog Wenerolog </a></h3><div class="adres"><p>ul. Farna 2</p><p>85-101 Bydgoszcz</p><p>kujawsko - pomorskie</p>
</div><p><img alt="telefon" src="/images/layout/telefon.png"/>  52 349 33 19</p><div style="float:left;clear:both;"></div><p class="cardList-company-desc-more">
<a href="/b/60852" target="_new">więcej »</a>
</p><div style="clear:both;"></div></li></ol><div class="slowa_k">Branże: <h4><a class="slowa" href="/firmy/polska/uslugi/medycyna-dermatologia-alergologia" title="Dermatologia, Alergologia">Dermatologia, Alergologia</a></h4>, </div></div><div id="firmy_d"></div></div>

相关问题 更多 >