ich habe einen Forum Datensatz gescraped und möchte den Seitenstatus von den Themen-URLs übeprüfen. Die URLs samt Kommentartexte etc.
sind in einer .csv Datei gespeichert. Der Code lautet wie folgt:
Code: Alles auswählen
import pandas as pd
from urllib.request import urlopen
#Pfad zur Reddit Datei
reddit_data_path = r'C:\PFADZURDATEI\2018_01_000000000000.csv'
#Erstellung einer leeren Liste (Array), in der alle Subreddits rein sollen
subreddits_data = []
#Definition des Dataframes
df = pd.read_csv(reddit_data_path, sep=',', header=0, low_memory=False,usecols=['created_utc', 'subreddit', 'author',
'url', 'title'])[['created_utc',
'subreddit', 'author',
'url', 'title']]
#Zeige die ersten fünf Zeilen der CSV Datei an.
print(df.head(5))
for index, row in df.iterrows():
url_check = urlopen(row['url'].encode('utf-8'))
if url_check.code == 200: #200 steht für "OK" also URL ist abrufbar
url_status = 'available'
else:
if (url_check.code / 100 >= 4): #alles gleich und/oder über 400 ist nicht erreichbar.
url_status = 'unavailable'
subreddits_data.append({'created_utc': int(row['created_utc']),
'subreddit': str(row['subreddit']),
'author': str(row['author']),
'title': str(row['title']),
'url': str(row['url']),
'url status': str(row['url_status'])})
data_reddit = pd.DataFrame(data = subreddits_data, columns = ['created_utc',
'subreddit',
'author',
'title',
'url',
'url status'])
data_reddit.to_csv('reddit_csv.csv')
Traceback (most recent call last):
File "C:/PFADZURDATEI/PycharmProjects/Reddit/reading_analyze.py", line 29, in <module>
url_check = urlopen(row['url'].encode('utf-8'))
File "C:\PFADZURDATEI\AppData\Local\Programs\Python\Python36-32\lib\urllib\request.py", line 223, in urlopen
return opener.open(url, data, timeout)
File "C:\PFADZURDATEI\AppData\Local\Programs\Python\Python36-32\lib\urllib\request.py", line 517, in open
req.timeout = timeout
AttributeError: 'bytes' object has no attribute 'timeout'
Ich habe gegooglet und schon in dieser Zeile das "encode" hinzugefügt, damit es den ASCII Fehler behebt.:
Code: Alles auswählen
url_check = urlopen(row['url'][color=#FF0000].encode('utf-8'))[/color]
Was kann man hier machen? Die Links sind alle in der Form "https://www.URL.XY/.../..."
LG
fatony