问题描述
我有一个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循环的第一个迭代中立即返回函数,这就是为什么只得到第一段的原因。