我不能使用其他函数来提取数据并从beautifulsoup python中过滤掉

时间:2019-04-02 08:59:53

标签: python function beautifulsoup python-requests

我正在尝试从网站获取请求文本,并使用beautifulsoup筛选出数据。但是,当我编写此代码时,它给了我一个错误,但是我无法运行它,请帮忙。

我试图将文本声明为全局变量,但是我不明白如何在其他函数中使用另一个函数变量。

import requests
from bs4 import BeautifulSoup

global website
global text

website = raw_input('Enter Website: ')

def getconnect():
    req = requests.get(website)
    text = req.text

def bs4(text):
    soup = BeautifulSoup(text , 'html.parser')
    print soup.title
    print soup.p

def main():
    return

getconnect()
bs4()

我想从网站中提取数据,然后使用不同的功能通过beautifulsoup运行数据。我刚刚开始编程。

谢谢

3 个答案:

答案 0 :(得分:0)

您需要这样的东西

import requests
from bs4 import BeautifulSoup


def parse():
    website = input('Enter Website: ')
    text = requests.get(website).text
    soup = BeautifulSoup(text, 'html.parser')
    print(soup.title)
    print(soup.p)


if __name__ == '__main__':
    parse()

答案 1 :(得分:0)

您没有将文本传递给bs4方法。

您应该有这个:

text = getconnect()
bs4(text)

答案 2 :(得分:0)

您的代码有几个问题:

  1. 您声明<input type="text" class="partyTagInput" maxlength="49" value=""> <br> <input type="text" id="inputTag" maxlength="35" value="TEXT HERE"> <br> <button id="buttonTag" style="width: 30%;">BUTTON</button>变量的方式不正确。如果要修改全局变量的值,则需要使用global关键字 inside 函数。

  2. 您已经定义了global函数bs4,以使其期望一个参数。但是,您随后将在不带参数def bs4(text):的情况下调用它。

这是一个可行的实现:

bs4()

演示:https://repl.it/@glhr/55470747

但是,最好避免使用全局变量:

import requests
from bs4 import BeautifulSoup

text = ""
website = raw_input('Enter Website: ')

def getconnect():
    global text
    req = requests.get(website)
    text = req.text

def bs4():
    soup = BeautifulSoup(text , 'html.parser')
    print soup.title
    print soup.p

getconnect()
bs4()