Python 名称错误:未定义名称“Title”(为什么未定义“Title”)
下面的代码一直工作到最后一行:Python 名称错误:未定义名称“Title”(为什么未定义“Title”),python,syntax-error,Python,Syntax Error,下面的代码一直工作到最后一行: writer.writerow([Title, Views, Likes, Dislikes, datetime.now()]) 我收到这个错误: NameErrorTraceback (most recent call last) <ipython-input-45-1666dd7f773b> in <module>() ----> 1 writer.writerow([Title, Views, Likes, Dislikes,
writer.writerow([Title, Views, Likes, Dislikes, datetime.now()])
我收到这个错误:
NameErrorTraceback (most recent call last)
<ipython-input-45-1666dd7f773b> in <module>()
----> 1 writer.writerow([Title, Views, Likes, Dislikes, datetime.now()])
NameError: name 'Title' is not defined
有人能告诉我发生了什么事吗????使用python2和Jupyter
from urllib2 import urlopen
from bs4 import BeautifulSoup
import pandas as pd
import re
import requests
myurl = 'https://www.youtube.com/results?search_query=sports'
page = requests.get("https://www.youtube.com/results?search_query=sports")
page.status_code
soup = BeautifulSoup(page.content, 'html.parser')
soup
link_list = []
for link in soup.select('div.yt-lockup-content a[href^=/watch]'):
newLink = link.attrs.get('href')
link_list.append(newLink)
print(link_list[0:6])
index = range(len(link_list))
columns = ['Links', 'Title', 'Views', 'Likes', 'Dislikes']
df = pd.DataFrame(index=index, columns=columns)
df['Links'] = link_list
df['Links'] = 'https://www.youtube.com/' + df['Links']
for i in range(len(link_list)):
if i<5 or i>len(link_list)-5:
print('{} out of {}'.format(i, len(link_list)))
html = urlopen(df['Links'][i]).read()
from bs4 import BeautifulSoup
soup = BeautifulSoup(html.decode('utf-8', 'ignore'))
df['Title'][i] = soup.title.get_text()
df['Views'][i] = int(re.sub('[^0-9]', '',soup.select('.watch-view-count')[0].get_text().split()[0]))
df['Title'][i] = soup.title.get_text()
df['Views'][i] = int(re.sub('[^0-9]', '', soup.select('.watch-view-count')[0].get_text().split()[0]))
a = str(soup.find_all('button', \
attrs={'title': 'I like this'})).replace(",","")
df['Likes'][i] = float(re.findall(r'\d+', a)[0])
a = str(soup.find_all('button', \
attrs={'title': 'I dislike this'})).replace(",","")
df['Dislikes'][i] = float(re.findall(r'\d+', a)[0])
print(df.sort_values('Views', ascending = False).head())
print(df.sort_values('Views', ascending = False))
with open('youtube.csv', 'a') as csv_file:
writer = csv.writer(csv_file)
writer.writerow([Title, Views, Likes, Dislikes, datetime.now()])
排队
writer.writerow([Title, Views, Likes, Dislikes, datetime.now()])
您使用的是标题,而不是标题。Python将其解释为查找变量标题并将其值放在此处。当您真正想要做的是传递字符串值标题时。您需要将标题、视图、喜欢和不喜欢都放在引号中。为什么您认为这些变量会被定义?看起来您需要df.to\u csv行的第一项是列表;该列表中的前四项是程序中其他地方没有出现的变量名。您希望此语句做什么?请将您的代码片段减少到演示此问题的最小块。