Как я могу преобразовать очищенную от сети таблицу в csv? - PullRequest
0 голосов
/ 18 января 2020

Год go Я выучил немного python на одном из моих занятий, но с тех пор мне не приходилось много использовать, так что это может быть или не быть простым вопросом.

Я пытаясь отобрать в Интернете самые кассовые фильмы за все время из Box Office Mojo, и я хочу получить звание, звание и брутто за 10 лучших фильмов 2010-х годов. Я играл в python, и я могу получить всю таблицу в python, но я не знаю, как с ней манипулировать, не говоря уже о записи файла CSV. Любые рекомендации / советы?

Вот что напечатает для меня всю таблицу (первые несколько строк скопированы из старого задания по поиску в Интернете, чтобы начать работу):

    import bs4
    import requests
    from bs4 import BeautifulSoup as soup

    url = "https://www.boxofficemojo.com/chart/top_lifetime_gross/"
    headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 
     like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
    page_html = requests.get(url, headers=headers)

    page_soup = soup(page_html.text, "html.parser")

    boxofficemojo_table = page_soup.find("div", {"class": "a-section imdb-scroll-table-inner"})
    complete_table = boxofficemojo_table.get_text()
    print(complete_table)`

1 Ответ

0 голосов
/ 18 января 2020

Вы можете использовать pd.read_ html для этого.

import pandas as pd

Data = pd.read_html(r'https://www.boxofficemojo.com/chart/top_lifetime_gross/')
for data in Data:
    data.to_csv('Data.csv', ',')

2.Использование Bs4

import pandas as pd
from bs4 import BeautifulSoup
import requests

URL = r'https://www.boxofficemojo.com/chart/top_lifetime_gross/'
print('\n>> Exctracting Data using Beautiful Soup for :'+ URL)

try:
    res = requests.get(URL)
except Exception as e:
    print(repr(e))

print('\n<> URL present status Code = ',(res.status_code))
soup = BeautifulSoup(res.text,"lxml")
table = soup.find('table')

list_of_rows = []
for row in table.findAll('tr'):
    list_of_cells = []
    for cell in row.findAll(["td"]):
        text = cell.text
        list_of_cells.append(text)
    list_of_rows.append(list_of_cells)

for item in list_of_rows:
    ' '.join(item)

Data = pd.DataFrame(list_of_rows)
Data.dropna(axis = 0, how = 'all',inplace = True)
print(Data.head(10))

Data.to_csv('Table.csv')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...