|
11 | 11 | from selenium import webdriver |
12 | 12 | import selenium.webdriver.support.ui as selenium_ui |
13 | 13 | from requests_file import FileAdapter |
14 | | -from ricecooker.config import LOGGER, PHANTOMJS_PATH |
| 14 | +from ricecooker.config import LOGGER, PHANTOMJS_PATH, STRICT |
15 | 15 | from ricecooker.utils.html import download_file |
16 | 16 | from ricecooker.utils.caching import CacheForeverHeuristic, FileCache, CacheControlAdapter, InvalidatingCacheControlAdapter |
17 | 17 |
|
@@ -146,6 +146,8 @@ def make_request(url, clear_cookies=False, headers=None, timeout=60, *args, **kw |
146 | 146 |
|
147 | 147 | if response.status_code != 200: |
148 | 148 | print("NOT FOUND:", url) |
| 149 | + if STRICT: |
| 150 | + response.raise_for_status() |
149 | 151 |
|
150 | 152 | return response |
151 | 153 |
|
@@ -235,17 +237,30 @@ def css_content_middleware(content, url, **kwargs): |
235 | 237 | if css_middleware: |
236 | 238 | content = css_middleware(content, url, **kwargs) |
237 | 239 |
|
238 | | - file_dir = os.path.dirname(urlparse(url).path) |
| 240 | + root_parts = urlparse(url) |
239 | 241 |
|
240 | 242 | # Download linked fonts and images |
241 | 243 | def repl(match): |
242 | 244 | src = match.group(1) |
| 245 | + |
243 | 246 | if src.startswith('//localhost'): |
244 | 247 | return 'url()' |
245 | 248 | # Don't download data: files |
246 | 249 | if src.startswith('data:'): |
247 | 250 | return match.group(0) |
248 | | - src_url = urljoin(base_url, os.path.join(file_dir, src)) |
| 251 | + parts = urlparse(src) |
| 252 | + root_url = None |
| 253 | + if url: |
| 254 | + root_url = url[:url.rfind('/') + 1] |
| 255 | + |
| 256 | + if parts.scheme and parts.netloc: |
| 257 | + src_url = src |
| 258 | + elif parts.path.startswith('/') and url: |
| 259 | + src_url = '{}://{}{}'.format(root_parts.scheme, root_parts.netloc, root_parts.path) |
| 260 | + elif url and root_url: |
| 261 | + src_url = urljoin(root_url, src) |
| 262 | + else: |
| 263 | + src_url = urljoin(base_url, src) |
249 | 264 |
|
250 | 265 | if _is_blacklisted(src_url, url_blacklist): |
251 | 266 | print(' Skipping downloading blacklisted url', src_url) |
|
0 commit comments