获取 NameError:未定义名称“请求”

时间:2021-06-22 12:10:32

标签: python nameerror

我已经在 def 中导入了请求并运行了它。但是还是出现了名字错误... 我一次导入所有项目并将所有功能汇总为一个。

    #import all the libraries
    def import_all_modules():
      from bs4 import BeautifulSoup as soup
      import requests 
      import pandas as pd
      from google.colab import drive
    
    #Get
    def get_html_from_url(url:str):
      html=requests.get(url).content
      return html
    
    
    #load the html content
    def load_page_and_filter(html):
      soup_page=soup(html, "html")    
      shoes=soup_page.find_all("div",{"class":"good-box"})
      return shoes
    
    #Create Pandas DataFrame from HTML
    def generate_detaframe_from_soup(soup):
      names=[]
      prices=[]
      for shoe in soup:
        names.append(shoe.a.span.text)
        prices.append(shoe.div.p.text)
      
      adidas_shoes_dict={
          "Name":names,
          "Price":prices
      } 
      df= pd.DataFrame(data=adidas_shoes_dict)
      df["Price"]=df["Price"].apply(lambda x: float(x.split("\xa0")[-1]))
      return df
      
    #save CSV
    def save_csv(file_name, df):
      drive.mount("/content/drive")
      df.to_csv(file_name)

一次运行所有方法并将它们放在一个函数中


    def run_web_scraping(url,file_name):
      import_all_modules()
      html=get_html_from_url(url)
      soup=load_page_and_filter(html)
      df=generate_detaframe_from_soup(soup)
      save_csv(file_name, df)

为 run_web_scrapping 保存的 URL 和 file_name


    url="https://www.adidas.com.hk/men/shoes/basketball"
    file_name="/content/drive/MyDrive/adidas.csv"
    run_web_scraping(url,file_name)

1 个答案:

答案 0 :(得分:1)

导入绑定到当前范围内,因此如果您在函数中进行导入,一旦退出函数,它们将不可用。

只需将它们放在文件的顶部,而不是放在函数中,它应该可以很好地工作。