我对Python知之甚少。但我试图使用一个小的Python脚本在Extract,Transform和Load(ETL)中实现某些功能。我得到了想要的结果,但仍想了解这个脚本。
from bs4 import BeautifulSoup
import urllib
import re
import string
import csv
urlHandle = urllib.urlopen("http://finance.yahoo.com/q/cp?s=^DJI")
html = urlHandle.read()
soup = BeautifulSoup(html)
table = soup.find('table', attrs = {
'id': 'yfncsumtab'
})
rows = table.findAll('tr')
a = ''
csvfile = open("F:/data/yahoofinance.csv", 'w')
for tr in rows[5: ]:
for td in tr.find_all('td', attrs = {
'class': 'yfnc_tabledata1'
}):
a += '"' + td.get_text() + '",'
a += '\n'
csvfile.write(a)
a = '
我的问题在此代码中,soup
是从BeautifulSoup(html)
函数返回的对象。我对吗?所以在下一个语句中,我猜table
也是一个对象,这意味着我们正在使用soup
函数在find
对象中搜索一个值,并且它返回一个对象
请纠正我在上述代码中了解自己的信息......
urlHandle
是一个类,urllib
是什么? urlopen
是一种静态方法。
html
是一个对象,urlhandle
是一个类,read
是一种方法。
soup
是一个对象,BeautifulSoup(html)
是一个函数。
请对我的理解给出反馈......并纠正我经验丰富的单词出错的地方!
答案 0 :(得分:1)
urlHandle
是一个对象,urllib
是一个模块,urlopen
是一个模块
功能html
是一个对象,read
是一种方法soup
是一个对象,BeatifulSoup(html)
是BeautifulSoup
对象的构造函数这可能很混乱,但一般来说你可以记住,CamelCased名称是类,这使得CamelCase()成为构造函数。您导入的是一个模块,它可以包含类和/或函数。
答案 1 :(得分:1)
要技术化,我认为理解Python中的所有内容都是一个对象是很重要的。所以,类是对象,函数是对象,一切都是对象。
话虽如此,我们在此之后做出区分,例如“功能”,“课堂”等。
特别是答案 2 :(得分:1)
soup
是BeautifulSoup
。urlHandle
又是实例,urllib
是一个模块,urlopen
是属于此模块的函数html
是对象,read
是执行的方法。您可以使用type()
功能自行查找它们。
答案 3 :(得分:0)
在Python中基本上一切都是对象!
当您使用Public Sub Test()
Dim oRng As Range
Dim CC As ContentControl
Dim LC As Integer
Dim LRCC As Integer
Dim LTCC As Integer
Dim LE As Boolean
'Remove all content controls
Set oRng = ActiveDocument.Content
LTCC = LTCC + oRng.ContentControls.Count
For LC = oRng.ContentControls.Count To 1 Step -1
Set CC = oRng.ContentControls(LC)
If CC.LockContentControl = True Then
CC.LockContentControl = False
End If
CC.Delete
If Not LE Then
LRCC = LRCC + 1
End If
LE = False
Next
End Sub
时,您需要包含某个模块,例如import
。
urllib
之类的东西意味着你创建一个类BeautifulSoup模块的实例(也是一个对象),你启动/构造传递html对象。
然后soup = BeautifulSoup(html)
之类的东西是使用类的实例来完成某项工作的函数。在这种情况下,获取第一个具有值为'yfncsumtab'的属性id的HTML表。它回复了Beautifult标签/ obj。