Я не могу использовать другую функцию для извлечения данных и фильтрации из красивого питона - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь получить текст запроса с веб-сайта и использовать 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 голосов
/ 02 апреля 2019

Вы не передали текст методу bs4.

Вы должны иметь это:

text = getconnect()
bs4(text)
0 голосов
/ 02 апреля 2019

Есть несколько проблем с вашим кодом:

  1. Способ объявления global переменных неверен.Вам нужно использовать ключевое слово global внутри функций, если вы хотите изменить значение глобальной переменной.

  2. Вы определили свою функцию bs4def bs4(text): такой, что он ожидает аргумента.Однако затем вы вызываете его без аргумента bs4().

Вот рабочая реализация:

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()

Демонстрация: https://repl.it/@glhr/55470747

Однако лучше по возможности избегать использования глобальных переменных:

import requests
from bs4 import BeautifulSoup

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

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

text = getconnect(raw_input('Enter Website: '))
bs4(text)
0 голосов
/ 02 апреля 2019

Вам нужно что-то вроде этого

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...