【问题标题】:Alphanumeric increment in a URLURL 中的字母数字增量
【发布时间】:2019-11-29 21:22:16
【问题描述】:

我希望在浏览器中为字母数字序列的每个增量打开一个窗口。

例如:我想在浏览器中为 xyz.com/AA1 和 xyz.com/AA2&...xyz.com/AB1 ... 打开另一个窗口,直到 xyz.com/ZZ9

我知道它会使我的浏览器崩溃,但我只想看看我无法弄清楚的循环和增量的逻辑。

我尝试 os.system 打开网页,但似乎无法增加。

我的编程水平低到非常低,如果你每提出一些复杂的东西,我可能没有工具!

感谢您的帮助。

【问题讨论】:

  • AA1 具有三个值,因此您可以使用三个嵌套的 for-loops。在这里面你可以使用os.system()webbrowser.open()"{}{}{}".format(char1, char2, number)
  • insteaf 嵌套for-loops 你也可以使用itertools.product('ABC', 'ABC', '123')

标签: python loops url increment alphanumeric


【解决方案1】:

你可以使用三个嵌套的for循环

for char1 in "ABC":
    for char2 in "ABC":
        for digit in "123":
            print( ''.join((char1, char2, digit)) )

import itertools

for item in itertools.product('ABC', 'ABC', '123'):
    print( ''.join(item) )

import itertools
import string
import webbrowser

CHAR = string.ascii_uppercase
NUMBER = '123456789'

for item in itertools.product(CHAR, CHAR, NUMBER):
    text = ''.join(item)
    url = 'xyz.com/{}'.format(text)
    print(url)
    #webbrowser.open(url)
    #os.system("firefox " + url)

【讨论】:

  • 非常感谢您的快速响应!奇迹般有效!唯一的事情是,正如预期的那样,它加载了所有页面,是否有一种简单的方法可以让它加载,比如说 30 页?也许是一个计时器 Time.Sleep() ?
  • 我不知道你想打开什么网址。如果只是为了看到它,那么time.sleep() 可以。但是time.sleep() 无法控制您是否关闭了某个窗口以及是否必须打开下一个窗口才能打开 30 页。也许使用可以控制窗口的Selenium,您可以控制您打开了多少个选项卡。但是在网页抓取同时抓取 30 个页面时,您可以使用线程或进程以及可以运行 30 个工作人员的 Pool 对象。当一项工作结束其工作时,它将与下一个 url 一起使用。但可能不适用于os.system()webbrowser.open()
猜你喜欢
  • 1970-01-01
  • 2012-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-07
  • 1970-01-01
  • 1970-01-01
  • 2011-05-01
相关资源
最近更新 更多