在大字符串中搜索文件路径。返回文件路径+文件名

时间:2015-06-02 04:48:44

标签: python regex string beautifulsoup html-parsing

我有一个小项目,我试图从网页下载一系列壁纸。我是python的新手。

我正在使用urllib库,该库返回一长串网页数据,包括

<a href="http://website.com/wallpaper/filename.jpg">

我知道我需要下载的每个文件名都有

'http://website.com/wallpaper/'  

如何在页面源中搜索此部分文本,并返回图像链接的其余部分,以&#34; *。jpg&#34;结尾。扩展

r'http://website.com/wallpaper/ xxxxxx .jpg'

我在想是否可以格式化正则表达式,而xxxx部分没有被评估?只需检查路径和.jpg扩展名。然后在找到匹配后返回整个字符串

我是否在正确的轨道上?

4 个答案:

答案 0 :(得分:3)

我认为一个非常基本的正则表达式会做 喜欢:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

如果你使用(http:\/\/website\.com\/wallpaper\/[\w\d_-]*?\.jpg) ,这将返回整个字符串。

如果你使用

$1

然后(http:\/\/website\.com\/wallpaper\/([\w\d_-]*?)\.jpg) 将提供整个字符串,$1将仅提供文件名。

注意:转义($2)取决于语言,因此请使用python支持的内容。

答案 1 :(得分:3)

BeautifulSoup对于这类事情非常方便。

import re
import urllib3
from bs4 import BeautifulSoup

jpg_regex = re.compile('\.jpg$')
site_regex = re.compile('website\.com\/wallpaper\/')

pool = urllib3.PoolManager()
request = pool.request('GET', 'http://your_website.com/')
soup = BeautifulSoup(request)

jpg_list = list(soup.find_all(name='a', attrs={'href':jpg_regex}))
site_list = list(soup.find_all(name='a', attrs={'href':site_regex}))

result_list = map(lambda a: a.get('href'), jpg_list and site_list)

答案 2 :(得分:3)

不要对HTML使用正则表达式。

相反,请使用HTML解析库。

BeautifulSoup是用于解析HTML的库,urllib2是用于获取URL的内置模块

import urllib2
from bs4 import BeautifulSoup as bs

content = urllib2.urlopen('http://website.com/wallpaper/index.html').read()
html = bs(content)
links = [] # an empty list

for link in html.find_all('a'):
   href = link.get('href')
   if '/wallpaper/' in href:
      links.append(href)

答案 3 :(得分:2)

搜索&#34; http://website.com/wallpaper/&#34; url中的子字符串,然后检查&#34; .jpg&#34;在url中,如下所示:

domain = "http://website.com/wallpaper/"
url = str("your URL")
format = ".jpg"
for domain in url and format in url:
    //do something