在大字符串中搜索文件路径。 Return 文件路径 + 文件名
Searching Large String for file path. Return filepath + filename
我有一个小项目,我正在尝试从网页下载一系列壁纸。我是 python 的新手。
我正在使用 urllib
库,它 return 正在处理一长串网页数据,其中包括
<a href="http://website.com/wallpaper/filename.jpg">
我知道我需要下载的每个文件名都有
'http://website.com/wallpaper/'
我如何在页面源中搜索这部分文本,以及 return 图像的其余部分 link,以“*.jpg”扩展名结尾?
r'http://website.com/wallpaper/ xxxxxx .jpg'
我在想是否可以格式化一个 xxxx 部分不被计算的正则表达式?只需检查路径和 .jpg 扩展名。然后 return 找到匹配项后的整个字符串
我走在正确的轨道上吗?
我认为一个非常基本的正则表达式就可以了。
喜欢:
(http:\/\/website\.com\/wallpaper\/[\w\d_-]*?\.jpg)
如果您使用 </code>这将 return 整个字符串。</p>
<p>如果你使用</p>
<pre><code>(http:\/\/website\.com\/wallpaper\/([\w\d_-]*?)\.jpg)
然后 </code> 将给出整个字符串,而 <code>
将仅给出文件名。
注意:转义 (\/
) 取决于语言,因此请使用 python 支持的内容。
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)
不要对 HTML 使用正则表达式。
而是使用 HTML 解析库。
BeautifulSoup
is a library for parsing HTML and 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)
在url中搜索“http://website.com/wallpaper/”子串,然后在url中查找“.jpg”,如下图:
domain = "http://website.com/wallpaper/"
url = str("your URL")
format = ".jpg"
for domain in url and format in url:
//do something
我有一个小项目,我正在尝试从网页下载一系列壁纸。我是 python 的新手。
我正在使用 urllib
库,它 return 正在处理一长串网页数据,其中包括
<a href="http://website.com/wallpaper/filename.jpg">
我知道我需要下载的每个文件名都有
'http://website.com/wallpaper/'
我如何在页面源中搜索这部分文本,以及 return 图像的其余部分 link,以“*.jpg”扩展名结尾?
r'http://website.com/wallpaper/ xxxxxx .jpg'
我在想是否可以格式化一个 xxxx 部分不被计算的正则表达式?只需检查路径和 .jpg 扩展名。然后 return 找到匹配项后的整个字符串
我走在正确的轨道上吗?
我认为一个非常基本的正则表达式就可以了。
喜欢:
(http:\/\/website\.com\/wallpaper\/[\w\d_-]*?\.jpg)
如果您使用 </code>这将 return 整个字符串。</p>
<p>如果你使用</p>
<pre><code>(http:\/\/website\.com\/wallpaper\/([\w\d_-]*?)\.jpg)
然后 </code> 将给出整个字符串,而 <code>
将仅给出文件名。
注意:转义 (\/
) 取决于语言,因此请使用 python 支持的内容。
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)
不要对 HTML 使用正则表达式。
而是使用 HTML 解析库。
BeautifulSoup
is a library for parsing HTML and 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)
在url中搜索“http://website.com/wallpaper/”子串,然后在url中查找“.jpg”,如下图:
domain = "http://website.com/wallpaper/"
url = str("your URL")
format = ".jpg"
for domain in url and format in url:
//do something