调试使用Beautifulsoup的Web抓取脚本

问题描述

我有一个csv文件,其中包含一些网址。当我尝试一个一个地抓取url文本时,没有问题,但是当我运行一个试图抓取所有url并将它们存储在数据框中的函数时,我只有第一段。

我需要纠正什么?

        def extract_text (row):
        try:
            url = row['url']
            driver = webdriver.Firefox(executable_path='geckodriver.exe')
            driver.implicitly_wait(30)
            driver.get(url)
            time.sleep(3)
            page = driver.page_source
            driver.quit()
            soup = bs.BeautifulSoup(page,'lxml')
            body = soup.find('div',class_ = 'content-canvas Bgc(#fff) Pos(r)')
            list_of_paragraphs = body.find_all('p')
            for paragraph in list_of_paragraphs:
                return(paragraph.text)
        
        except:
            next
    
    temp['text']=temp.apply(extract_text,axis=1)
    news = temp['text']

解决方法

如果return确实停止了该函数,那么它将在for循环的第一次迭代时停止。

,

尝试:

        results = []
        for paragraph in list_of_paragraphs:
            results.append(paragraph.text)
        return results

您将在for循环的第一个迭代中立即返回函数,这就是为什么只得到第一段的原因。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...