【发布时间】:2015-06-11 13:57:59
【问题描述】:
我正在使用 requests 提取 HTML 页面并尝试使用正则表达式从中提取链接,但我不断收到 TypeError: expected string or buffer。
代码:
r = requests.get('https://reddit.com/r/spacex')
subreddit=r.text
match=re.search(r'(<li class="first"><a href=")(.+)(")', subreddit)
if match is not None:
print(match.group(2))
但是,如果我将一大块 HTML 硬编码为字符串,那么我的代码就可以工作:
subreddit='<li class="first"><a href="http://www.reddit.com/r/spacex/comments/3115xw/latest_update_pic_of_slc4_pad_shows_ln2_tankage/"'
r = requests.get('https://reddit.com/r/spacex')
match=re.search(r'(<li class="first"><a href=")(.+)(")', subreddit)
if match is not None:
print(match.group(2))
我也试过了
match=re.search(r'(<li class="first"><a href=")(.+)(")', str(subreddit))
按照这里的建议,但这不起作用。我没有收到任何错误,但 match.group(2) 从未打印过链接。
【问题讨论】:
-
可能是编码问题。检查 HTML 块使用的编码类型。另外,请查看 BeautifulSoup4 (crummy.com/software/BeautifulSoup/bs4/doc)。它是一个 HTML 解析器。
-
使用BeautifulSoup进行HTML解析。
-
我也对此进行了大量搜索,但我真的不确定。我做了 print(r.encode) 并打印了 UTF-8。这有帮助吗?编辑:我现在意识到我本可以使用beautifulsoup,但我真的很想弄清楚这一点。
-
你的代码对我有用..
-
尝试将其编码为 ascii (stackoverflow.com/questions/4299675/…) 看看是否可行。我几乎可以肯定我之前在写刮板时遇到过这个问题。
标签: python html regex python-requests encode