N结果后,美丽的汤get_all()迭代停止

时间:2017-11-09 00:51:45

标签: python web-scraping beautifulsoup

以下Python脚本正在运行且没有错误,但仅返回前6个商场的结果。

from bs4 import BeautifulSoup
from selenium import webdriver

stores_link = "http://www.ardenfair.com/Directory"

stores_driver = webdriver.Firefox()
stores_driver.get(stores_link)

stores_html = stores_driver.page_source
stores_soup = BeautifulSoup(stores_html, "html5lib")

for outer_stores_html in stores_soup.find_all(class_="result-item uk-scrollspy-init-inview uk-scrollspy-inview uk-animation-fade"):
    try:
        store_name = outer_stores_html.find_all(class_="result-description font-style-4")[0].text
        store_level_phone = outer_stores_html.find_all(class_="search-result-details font-style-1")[0].text

        print("-->" + store_name, store_level_phone)
    except IndexError:
        continue

stores_driver.close()

我正在查看HTML,并且我在find_all()方法中搜索的div对于每个商店都是相同的,并且页面上有超过6个。为什么我只找到前6个?

1 个答案:

答案 0 :(得分:1)

这是因为对于db.collection.deleteMany( <filter>, { writeConcern: <document>, collation: <document> } ) 的动画,HTML元素的css fading in and out正在随时更改。您应该只使用那些不会更改的类。我快速浏览了一下,我认为你应该使用for循环,如下所示:

classes

注意我用于元素的类名。我只为每个for outer_stores_html in stores_soup.find_all(class_="result-item"): try: store_name = outer_stores_html.find_all(class_="result-description")[0].text store_level_phone = outer_stores_html.find_all(class_="search-result-details")[0].text print("-->" + store_name, store_level_phone) except IndexError: continue 函数使用了一个。

<强>结果: 我得到了很多结果(我认为184个结果)。