Я хотел бы создать набор данных, включающий информацию, скопированную с веб-сайта. Я объясняю, что я сделал, и ожидаемый результат ниже. Я получаю пустые массивы для строк и столбцов, а затем для всего набора данных, и я не понимаю причину. Надеюсь, вы мне поможете.
1) Создайте пустой фрейм данных только с одним столбцом: этот столбец должен содержать список URL для использования.
data_to_use = pd.DataFrame([], columns=['URL'])
2) Выберите URL-адреса из предыдущего набора данных.
select_urls=dataset.URL.tolist()
Этот набор URL-адресов выглядит следующим образом:
URL
0 www.bbc.co.uk
1 www.stackoverflow.com
2 www.who.int
3 www.cnn.com
4 www.cooptrasportiriolo.it
... ...
3) Заполните столбец этими urls:
data_to_use['URL']= select_urls
data_to_use['URLcleaned'] = data_to_use['URL'].str.replace('^(www\.)', '')
4) Выберите случайную выборку для проверки: первые 50
строк в столбце URL
data_to_use = data_to_use.loc[1:50, 'URL']
5) Попробуйте очистить информацию
import requests
import time
from bs4 import BeautifulSoup
urls= data_to_use['URLcleaned'].tolist()
ares = []
for u in urls: # in the selection there should be an error. I am not sure that I am selecting the rig
print(u)
url = 'https://www.urlvoid.com/scan/'+ u
r = requests.get(url)
ares.append(r)
rows = []
cols = []
for ar in ares:
soup = BeautifulSoup(ar.content, 'lxml')
tab = soup.select("table.table.table-custom.table-striped")
try:
dat = tab[0].select('tr')
line= []
header=[]
for d in dat:
row = d.select('td')
line.append(row[1].text)
new_header = row[0].text
if not new_header in cols:
cols.append(new_header)
rows.append(line)
except IndexError:
continue
print(rows) # this works fine. It prints the rows. The issue comes from the next line
data_to_use = pd.DataFrame(rows,columns=cols)
К сожалению, что-то не так в предыдущих шагах, так как я не получаю никаких результатов, но только []
или __
.
Ошибка от data_to_use = pd.DataFrame(rows,columns=cols)
:
ValueError: 1 columns passed, passed data had 12 columns
Мой ожидаемый результат будет:
URL Website Address Last Analysis Blacklist Status \
bbc.co.uk Bbc.co.uk 9 days ago 0/35
stackoverflow.com Stackoverflow.com 7 days ago 0/35
Domain Registration IP Address Server Location ...
996-08-01 | 24 years ago 151.101.64.81 (US) United States ...
2003-12-26 | 17 years ago ...
В конце я должен сохранить набор данных, созданный в файле CSV.