Python 使用通常速度很快的urllib2进行刮取时,会由于一些因素而减慢速度-它们是什么?
我通常只编写函数式Python程序,但我已经决定采用面向对象的方法(我的第一个方法)来编写我当前的程序,即web scraper:Python 使用通常速度很快的urllib2进行刮取时,会由于一些因素而减慢速度-它们是什么?,python,loops,oop,inheritance,list-comprehension,Python,Loops,Oop,Inheritance,List Comprehension,我通常只编写函数式Python程序,但我已经决定采用面向对象的方法(我的第一个方法)来编写我当前的程序,即web scraper: import csv import urllib2 NO_VACANCIES = ['no vacancies', 'not hiring'] class Page(object): def __init__(self, url): self.url = url def get_source(self): sel
import csv
import urllib2
NO_VACANCIES = ['no vacancies', 'not hiring']
class Page(object):
def __init__(self, url):
self.url = url
def get_source(self):
self.source = urllib2.urlopen(url).read()
return self.source
class HubPage(Page):
def has_vacancies(self):
return not(any(text for text in NO_VACANCIES if text in self.source.lower()))
urls = []
with open('25.csv', 'rb') as spreadsheet:
reader = csv.reader(spreadsheet)
for row in reader:
urls.append(row[0].strip())
for url in urls:
page = HubPage(url)
source = page.get_source()
if page.has_vacancies():
print 'Has vacancies'
一些上下文:hubbage
代表公司网站上典型的“工作”页面。我正在对页面
进行子类化,因为我最终会为单个作业页面再次对其进行子类化,并且一些方法将仅用于提取单个作业页面的数据(这可能有些过分)
这是我的问题:我从经验中知道,urllib2
,尽管它有批评者,但在做它所做的事情时非常快,即获取页面的源代码。然而,我注意到,在我的设计中,每个url的处理时间比我通常观察到的要长几个数量级
- 是否涉及类实例化的事实(不必要, 也许吧李>
被继承的事实可能是原因吗李>hubbage
- 当调用
时,如果它包含一个列表理解(如此处所示),那么调用是否代价高昂any()