RegexLinkExtractor: encode URL unicode value when creating Links

This commit is contained in:
Paul Tremberth 2014-01-23 19:36:31 +01:00 committed by Daniel Graña
parent 8da65deda1
commit d0ee545a8f
1 changed files with 4 additions and 2 deletions

View File

@ -7,7 +7,7 @@ from scrapy.link import Link
from .sgml import SgmlLinkExtractor
linkre = re.compile(
"<a\s.*?href=(\"[.#]+?\"|\'[.#]+?\'|[^\s]+?)(>|\s.*?>)(.*?)<[/ ]?a>",
"<a\s.*?href=(\"[.#]+?\"|\'[.#]+?\'|[^\s]+?)(>|\s.*?>)(.*?)<[/ ]?a>",
re.DOTALL | re.IGNORECASE)
def clean_link(link_text):
@ -25,6 +25,8 @@ class RegexLinkExtractor(SgmlLinkExtractor):
clean_text = lambda t: replace_escape_chars(remove_tags(t.decode(response_encoding))).strip()
links_text = linkre.findall(response_text)
urlstext = set([(clean_url(url), clean_text(text)) for url, _, text in links_text])
urlstext = set([(clean_url(url).encode(response_encoding), clean_text(text))
for url, _, text in links_text])
return [Link(url, text) for url, text in urlstext]