使用Selenium进行网络抓取时的For Loops

时间:2020-04-16 23:39:13

标签: python selenium web-scraping beautifulsoup

我正在尝试从以下网站上抓取信息:https://www.axial.net/forum/companies/united-states-family-offices/

我正在尝试抓取每个家族办公室的描述,因此“ https://www.axial.net/forum/companies/united-states-family-offices/” + insert_company_name是我需要抓取的页面。

因此,我编写了以下代码来仅对该程序页面进行测试:

from bs4 import BeautifulSoup as soup
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome('insert_path_here/chromedriver')
driver.get("https://network.axial.net/company/ansaco-llp")
page_source = driver.page_source
soup2 = soup(page_source,"html.parser")
soup2.findAll('axl-teaser-description')[0].text

这适用于单个页面,只要描述没有“显示完整描述”下拉按钮。我将其保存为另一个问题。

我编写了以下循环:

#Note: Lst2 has all the names for the companies. I made sure they match the webpage
lst3=[]
for key in lst2[1:]:
    driver.get("https://network.axial.net/company/"+key.lower())
    page_source = driver.page_source


    for handle in driver.window_handles:
         driver.switch_to.window(handle)
    word_soup = soup(page_source,"html.parser")



    if word_soup.findAll('axl-teaser-description') == []:
        lst3.append('null')
    else:
        c = word_soup.findAll('axl-teaser-description')[0].text
        lst3.append(c)
print(lst3)

运行循环时,所有值都显示为“ null”,即使没有“单击以获取完整描述”按钮的值也是如此。

我编辑了循环以改为打印出“ word_soup”,如果我没有循环地运行它并且没有描述文本,则页面会有所不同。

我不明白为什么循环会导致这种情况,但显然是的。有人知道如何解决此问题吗?

2 个答案:

答案 0 :(得分:1)

找到解决方案。在driver.get之后将程序暂停3秒钟:

import time
lst3=[]
for key in lst2[1:]:
    driver.get("https://network.axial.net/company/"+key.lower())
    time.sleep(3)
    page_source = driver.page_source



    word_soup = soup(page_source,"html.parser")



    if word_soup.findAll('axl-teaser-description') == []:
        lst3.append('null')
    else:
        c = word_soup.findAll('axl-teaser-description')[0].text
        lst3.append(c)
print(lst3)

答案 1 :(得分:0)

我看到页面使用javascript生成文本,这意味着它没有显示在页面源代码中,这很奇怪,但是还可以。我不太明白为什么您只迭代并打开已打开的Selenium的所有实例,但是您绝对不会在页面source / beautifulsoup中找到描述。

老实说,如果可以的话,我个人会寻找一个更好的网站,否则,您将不得不使用效率低下又可怕的硒来尝试。