如何将规则从configparser传递给BeatifulfulSoup?

时间:2018-05-19 09:27:41

标签: python-3.x beautifulsoup configparser

有一种处理汤的方法:

def get_title(self):
    # print(self.get_page)
    # print(self.title_rule)
    # print(self.get_page.find(self.title_rule))
    title = self.get_page.find(self.title_rule).text
    return textwrap.fill(title, width=79)

self.get_page打印页面 - 确定:

@property
def get_page(self):
    page = requests.get(self.url)
    page.encoding = self.encode
    return BeautifulSoup(page.text, 'html.parser')

self.title_rule从config.ini获取规则:

$print(self.title_rule)
'h1', {'class': 'title'}

[pravda.ru]
title = 'h1', {'class': 'title'}

def get_rule(self):
    config = configparser.ConfigParser()
    config.read(path)
    title_rule = config.get(self.site_name, "title")
    return title_rule

但是当我尝试时:

print(self.get_page.find(self.title_rule))
None

如果我尝试:

print(self.get_page.find('h1', {'class': 'title'}))

rule = 'h1', {'class': 'title'}
print(self.get_page.find(rule))

好的!

我认为这是因为字符串来自配置文件。

例如:rule = "'h1', {'class': 'title'}", self.title_rule = "'h1', {'class': 'title'}"

请帮助我,从配置

获取
self.title_rule = 'h1', {'class': 'title'}

没有("),不是字符串。

1 个答案:

答案 0 :(得分:0)

这一行的问题:

print(self.get_page.find(self.title_rule))

是没有设置self.title_rule,你似乎拥有的是一个局部变量title_rule,在类方法get_title_rule和一个名为'title'的私有类变量中。所以我建议你使用

print(self.get_page().find(self.get_title_rule()))

请注意get_page之后的括号!