Python:通过缓冲区解析带有通配符的子字符串

时间:2014-05-13 17:26:18

标签: python search

stackoverflow上的第一篇文章。我会尽量正确格式化。

我正在处理一个我没有多少经验的小蟒蛇脚本,用于从图像subreddit中删除图像。目前我可以下载一个html页面,例如来自r / pics,但我在解析图像网址时遇到问题,特别是来自imgur的网页。我想做的是过滤出表格的网址

http://i.imgur.com/ PNG *******。

进入元组,但我不确定如何做到这一点。

我目前的尝试是这样的:

    from subprocess import call
    picture_url_list = []
    return_code = call("wget -O redithtml www.reddit.com/r/pics/", shell = True)

    inputfile = open("redithtml")
    find_text = "http://i.imgur.com/"

    for line in inputfile:
        while True:
            this_url = line.rfind(find_text)
            if this_url == -1:
                break
            line_partition = line.partition(line[this_url:this_url + 31])
            picture_url_list.append(line_partition[1])
            line = line_partition[2]
            if line.lenght() == 0:
                break

我一直在寻找here寻求帮助,但唯一的例子是使用'}'}或者' fnmatch'解析元组,而不是文本流。

所以,只是为了澄清;我试图通过查找并将i.imgur网址放在一个元组中来删除reddit中的图像,以便在下一段代码中删除(未显示)。

1 个答案:

答案 0 :(得分:0)

使用BeautifulSoup并请求下载和处理页面。

from bs4 import BeautifulSoup

import requests
r  = requests.get("http://www.reddit.com/r/pics/")

data = r.text

soup = BeautifulSoup(data)

for link in soup.find_all('a', href=True):
    linkHref = link.get('href')
    if linkHref.startswith('http://i.imgur.com/'):
        print(linkHref)

soup.find_all('a', href=True)将使用已定义的href属性获取所有链接。在循环中,我们检查链接是否以http://i.imgur.com/开头,如果我们打印它(这里你必须添加代码来完成你不想对该图像做的事情。)