繁体   English   中英

使用 selenium 进行网络抓取 Python 时出现循环

[英]For Loops while using selenium for webscraping Python

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

我正在尝试抓取每个家族办公室的描述,所以“ https://www.axis.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”,如果我在没有循环的情况下运行它并且没有描述文本,那么页面会有所不同。

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

找到解决方案。 在 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)

我看到该页面使用 javascript 来生成文本,这意味着它不会出现在页面源中,这很奇怪但没关系。 我不太明白为什么你只是迭代并切换到你打开的 Selenium 的所有实例,但你肯定不会在页面源/beautifulsoup 中找到描述。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM