【问题标题】:beautifulsoup does not shows all the elements on websitebeautifulsoup 没有显示网站上的所有元素
【发布时间】:2019-06-06 14:25:26
【问题描述】:

我正在为网站 [https://edp.by/shop/womens-fragrances/][1] 首先,我从网站获取所有链接以浏览网站

import requests
from bs4 import BeautifulSoup

def get_html(url):
    r = requests.get(url,'lxml')
    return r.text
url='https://edp.by/'
html=get_html(url)
soup=BeautifulSoup(html, )

x = soup.findAll("div", {"class": "row mainmenu"})
#print(x)
links=[]
for i in x:
    z=i.find_all("ul", {"class": "nav navbar-nav"})[0].find_all("a", {"class": "dropdown-toggle"})
    print(233,z,len(z),type(z))
    for i in z:
        q=i["href"]

        links.append(url+str(q))

然后我试图从链接中获取每个产品:

url='https://edp.by/shop/womens-fragrances/'
html=get_html(url)
soup=BeautifulSoup(html, )

#x = soup.findAll("div", {"class": "row"})
#print()
action = soup.find('form').get('action')
print(action)

结果是:/search/

但是在网站上我通过谷歌代码分析器看到了所有的结构

<form method="get" action="/shop/womens-fragrances/">
        <div class="rr-widget" data-rr-widget-category-id="594" data-rr-widget-id="516e7cba0d422d00402a14b4" data-rr-widget-width="100%"></div>
        <div class="shop_block">
          <div class="shop_table">
            <div class="col-md-4 col-sm-4 col-xs-12 product">
              <div class="block">
                <a href="/shop/womens-fragrances/43653/">
                  <img src="/images/no-image.png" class="text-center" alt="" title="">
                  <p class="fch"></p>
                  <p class="tch">0,00 руб. </p>
                </a>

我想获得产品、图像和文本的链接,但 bs4 没有显示它。什么原因,我怎么能得到它? 我也试过mechanicalsoup,也没有结果

import mechanicalsoup


browser = mechanicalsoup.StatefulBrowser()
browser.open(links[0])
form = browser.select_form('form')
action = form.form.attrs['action']
print(action)       `/search/`

【问题讨论】:

    标签: python python-3.x parsing beautifulsoup mechanicalsoup


    【解决方案1】:

    .find() 只会获得该标签的第一次出现。 &lt;form&gt; 标签有 6 个元素。您可以使用.find_all(),然后当您遍历它时,您会看到它是该列表中的第三个索引位置:

    import requests
    from bs4 import BeautifulSoup
    
    def get_html(url):
        r = requests.get(url,'lxml')
        return r.text
    url='https://edp.by/'
    html=get_html(url)
    soup=BeautifulSoup(html, )
    
    x = soup.findAll("div", {"class": "row mainmenu"})
    #print(x)
    links=[]
    for i in x:
        z=i.find_all("ul", {"class": "nav navbar-nav"})[0].find_all("a", {"class": "dropdown-toggle"})
        print(233,z,len(z),type(z))
        for i in z:
            q=i["href"]
    
            links.append(url+str(q)) 
    
    
    url='https://edp.by/shop/womens-fragrances/'
    html=get_html(url)
    soup=BeautifulSoup(html, 'html.parser')
    
    #x = soup.findAll("div", {"class": "row"})
    #print()
    actions = soup.find_all('form')
    for action in actions:
        alpha = action.get('action')
        print (alpha)
    

    输出:

    /search/
    /filter-ajax/
    /filter-ajax/
    /shop/womens-fragrances/
    /shop/womens-fragrances/?lxml
    /users/
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多