【发布时间】:2020-05-04 21:12:27
【问题描述】:
一年前,我在我的一个课程中学习了一些 Python,但从那时起就不用太多了,所以这可能是一个简单的问题。
我正在尝试从 Box Office Mojo 网络抓取所有时间表中票房最高的电影,我想获取 2010 年代前 10 部电影的排名、标题和总票房。我一直在玩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)`
【问题讨论】:
-
您尝试将表中的每一行写入 CSV 什么?或者也许看看 openpyxl 或其他 excel 作家。
-
我可以把整个表导入 python 导入 Python 作为什么?
-
您的代码返回一个长字符串。我可以使用
.get_text(separator=' ')对其进行一些清理,但我认为您会希望根据某些标准将其拆分为字典。看起来您可以识别:,然后在此之前检查字符以获取您的密钥以及:之后的所有内容作为值,但这可能需要一些复杂的逻辑。
标签: python html web-scraping beautifulsoup