![](/img/trans.png)
[英]Python web scraping: TypeError: 'int' object is not subscriptable
[英]'int' object is not subscriptable (scraping tables from website)
我非常不熟悉編碼。大約一個星期前,我剛剛學會了如何使用終端,如果您對我的使用情況有所了解。 我需要學習如何從網站上抓取數據,因此我正在熟悉的網站上進行練習,並且試圖創建一個顯示以下URL數據的csv文件: http : //phish.net/song 。 我實質上是從該站點( https://chihacknight.org/blog/2014/11/26/an-intro-to-web-scraping-with-python.html )修改了代碼,然后嘗試使用它。
from bs4 import BeautifulSoup
import requests
import pandas as pd
url = "http://phish.net/song?"
r = requests.get(url)
data = r.text
soup = BeautifulSoup(data, "lxml")
table = soup.find('table')
rows = table.find('tr')
data = {
'song': [],
'original_artist': [],
'times': [],
'debut': [],
'last': [],
'gap': []
}
for row in rows:
cols = row.find('td')
data['song'].append(cols[0].get_text()))
data['original_artist'].append(cols[1].get_text())
data['times'].append(cols[2].get_text())
data['debut'].append(cols[3].get_text())
data['last'].append(cols[4].get_text())
data['gap'].append(cols[5].get_text())
phishData = pd.DataFrame(data)
phishData.to_csv("PhishData.csv")
我收到以下錯誤:
Traceback (most recent call last):
File "phishnet.py", line 20, in <module>
data['song'].append(str(cols[0].get_text()))
TypeError: 'int' object is not subscriptable
哪個對象不能下標? 以及如何解決此問題? 在此先感謝您的幫助,如果這不適合使用此論壇,請告訴我。
pd.read_html
似乎pd.read_html
您的要求。
df = pd.read_html("http://phish.net/song?")[0]
df.head()
Song Name Original Artist Times Debut \
0 Alumni Blues Phish 107 1985-03-16
1 And So To Bed Phish Found in Discography NaN
2 You Enjoy Myself Phish 581 1986-02-03
3 AC/DC Bag Phish 310 1986-04-01
4 F**k Your Face Phish 13 1987-04-29
Last Gap
0 2017-07-29 13.0
1 NaN NaN
2 2017-12-31 0.0
3 2017-12-28 3.0
4 2017-08-05 8.0
而且,最后的to_csv
調用-
df.to_csv("PhishData.csv")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.