小编Mil*_*sen的帖子

在Python 3.2中使用HTMLParser

我一直在使用HTML Parser从网站上删除数据并在执行此操作时剥离html编码.我知道各种各样的模块,比如Beautiful Soup,但是决定走不依赖"外部"模块的道路.Eloff提供了一个代码:从Python中的字符串中删除HTML

from HTMLParser import HTMLParser

class MLStripper(HTMLParser):
    def __init__(self):
        self.reset()
        self.fed = []
    def handle_data(self, d):
        self.fed.append(d)
    def get_data(self):
        return ''.join(self.fed)

def strip_tags(html):
    s = MLStripper()
    s.feed(html)
    return s.get_data()
Run Code Online (Sandbox Code Playgroud)

它适用于Python 3.1.但是,我最近升级到Python 3.2.x并发现我收到有关HTML Parser代码的错误,如上所述.

我的第一个错误指向该行:

s.feed(html)
Run Code Online (Sandbox Code Playgroud)

......错误说......

AttributeError: 'MLStripper' object has no attribute 'strict'
Run Code Online (Sandbox Code Playgroud)

因此,经过一些研究,我在顶线添加"strict = True",使其成为......

class MLStripper(HTMLParser, strict=True)
Run Code Online (Sandbox Code Playgroud)

但是,我得到了新的错误:

TypeError: type() takes 1 or 3 arguments
Run Code Online (Sandbox Code Playgroud)

为了看看会发生什么,我删除了"self"参数并留在"strict = True"中......这放弃了错误:

NameError: global name 'self' is not defined
Run Code Online (Sandbox Code Playgroud)

......我得到了"我猜测猜测"的感觉.

我不知道该class MLStripper(HTMLParser)行中的第三个参数是什么,之后selfstrict=True …

arguments html-parsing stripping web-scraping python-3.x

14
推荐指数
1
解决办法
2万
查看次数

Python 3,Web抓取和Javascript [哦我的]

我已经到了使用Javascript和Python3进入web-scraping网页的混战.我很清楚我的靴子可能正在与一匹死马接触,但无论如何我想要画出我的六射手.这是意大利面西部; 做我的灰帽子?

::背景故事::

我使用的是Python 3.2.3.

我有兴趣为用户定义的股票,etf或者收集YTD,1年,3年,5年10年的历史股票/ etf // mutual_fund价格数据......和/或类似的时间框架共同基金.我在Morningstar.com上设置我的网站,因为他们倾向于提供尽可能多的数据而不一定需要登录; 其他人,例如finance.google.com&c,他们提供的有关股票与etfs和共同基金的数据往往不一致.

将Morningstar用于此历史数据或称为"尾随总回报"的权衡,就是为了生成这些数据,他们使用Javascript.

以下是Morningstar的一些示例链接:

共同基金;

ETF;

股票.

我对Jails生成的图表中的"尾随返回"部分,第一行左右的数字感兴趣.

::试图到目前为止::

我已经确认wget不能使用Javascript; 甚至下载所有相关文件[css,.js,&c]都不允许我在浏览器或脚本中本地渲染javascript.StackOverflow上的研究证实了这一点.我愿意在这里纠正.

我的研究告诉我,Python3不存在Mechanize.无论如何我试过了,然后变成警察Javert喊道:"我知道了!" 在错误消息"模块不存在".

::我听说过...... ::

- >硒.但是,我的理解是,这需要Thy Favorite Browser实际打开一个网页,导航,然后不关闭,因为Selenium没有"关闭此选项卡//窗口"命令//选项.如果我// my_user想要​​获得许多etfs,股票和/或共同基金的历史数据怎么办?这是很多标签//窗口在浏览器中打开,不一定要打开.

- > httplib2的.我认为这很好,但我怀疑它是否会使用Javascript.是吗,例如使用.cache和get选项?

import httplib2
conn = httplib2.Http(".cache")
page = conn.request(u"http://the_url","GET")
Run Code Online (Sandbox Code Playgroud)

- >风车.见'Selenium'.然而,我非常关键地唱"拉曼查人".

- > Google的网页编写代码.试图下载一个载有Javascript的页面会导致......积极的结果吗?

我读过有关"不使用浏览器模拟浏览器"的喋喋不休.听起来像Mechanize,但不是我目前理解的Python3.

::我的问题::

任何建议,指示,解决方案,或"查看这里"的方向?

非常感谢,

万里,尘土飞扬的沙漠村民.

javascript python web-scraping python-3.x

4
推荐指数
1
解决办法
4591
查看次数

在Python中查找选定列表元素中的最大数字

我正在使用Python 3.2.3,并希望从列表中的特定元素中找到最大的数字.同样重要的是,我保留一些关于哪个元素是最大数字的知识,但我对这种情况的发生方式非常灵活.让我解释...

背景

我有以下列表:

the_list = ['Order', '1', '5', 'Order', '2', '18', 'Order', '3', '45', 'Order', '4', '2', 'Order', '5', '8', 'Order', '6', '2', 'Order', '7', '1', 'Order', '8', '1', 'Order', '9', '1']
Run Code Online (Sandbox Code Playgroud)

在每三个列表元素中,前两个是数据的描述 - 即"订单1","订单2","订单3"作为"订单","1",......"订单", 2',...'订单','3',...一直到"订单9".这些不会更改,并提供每个第三个列表元素的来源或名称.

每三个列表元素中的第三个是有问题的信息.在这个例子中,数字是5 ... 18 ... 45 ...... 2 ......等等.从这个每三个元素,我想找到最大的数字.在这种情况下,最大的数字是45.这些数字一直在变化; 它们可以是从0到100 [包括]的任何整数.

我迄今为止所做的一切

我尝试过以两种方式使用Python的max()函数.首先,简单......

max(the_list)
Run Code Online (Sandbox Code Playgroud)

...提供"订单"作为最大值.对我的目标一点糟糕.

所以我决定尝试制作一个新列表,仅列出原始列表中的每个第三个元素.像这样......

foo = (the_line[2], the_line[5], the_line[8], the_line[11], the_line[14], the_best_line[17], the_best_line[20], the_best_line[23], the_best_line[26])

max(foo)
Run Code Online (Sandbox Code Playgroud)

...提供"8"作为最大数字,第15个列表元素和第5个第三个列表元素.这是一个数字,但不是45 [在这个例子中]的最高数字.

我还涉及制作一系列if-else语句,但两者都不成功,并且在思维定势中必须有一个更加pythonic //优雅的方式.我承认我可能在这条路线上过早退出,而且//或者我的思维方式错误.

python compare numbers list

1
推荐指数
2
解决办法
4899
查看次数