Я довольно новичок в этом и сталкиваюсь со всеми проблемами. Любая помощь / руководство действительно ценится! У меня есть фрейм данных в следующей структуре:
data:
LINK
<link_one>
<link_two>
<link_three>
Имя фрейма данных data , и у него есть один столбец с именем LINK , который содержит несколько веб-ссылок. Я пытаюсь взять каждую ссылку из столбца LINK и выполнить некоторые операции очистки, чтобы вернуть содержимое текста каждой ссылки и прикрепить ее к столбцу с именем CONTENT в кадре данных. Вот какой результат я надеюсь:
data:
LINK CONTENT
<link_one> <text_body_one>
<link_two> <text_body_two>
<link_three> <text_body_three>
Это то, что я имею до сих пор:
from bs4 import BeautifulSoup
import pandas as pd
import requests
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
data = pd.read_csv("~/Downloads/links.csv")
def body_content(val):
url = val
try:
page = requests.get(url, verify=False).text
except requests.ConnectionError:
pass
soup = BeautifulSoup(page, 'lxml')
p_tags = soup.find_all('p')
p_tags_text = [tag.get_text().strip() for tag in p_tags]
sentence_list = [sentence for sentence in p_tags_text if not '\n' in sentence]
sentence_list = [sentence for sentence in sentence_list if '.' in sentence]
article = ' '.join(sentence_list)
return article
data['CONTENT'] = zip(*data['LINK'].map(body_content))
Пока функция body_content работает, но я не могу заставить содержимое правильно присоединиться к кадру данных. Получаем следующую ошибку:
UnboundLocalError: local variable 'page' referenced before assignment
Спасибо за потраченное время!