这就是我要做的事情:
我在这里遇到的问题是:
我尝试通过以下方式阅读给定网址的内容:
req = urllib2.urlopen(forum_url, None, timeout=10)
url_content = req.read()
然后使用类似以下内容解析url_content:
def parse_post_title(cls, content):
url_pattern = "<a href=\"read.php\?tid=.*\" id=\".*\" class=\"subject fl\">(.*)</a>"
title = ''
m = re.search(url_pattern, content)
# ......
return title
然后保存到db:
def make_insert_sql(self, post_list):
insert_list = []
for post_data in post_list:
insert_str = u'("%s", "%s", "%s", "%s", %d, %d, "%s", "%s", %d, %d)' % (post_data.forum_name,
post_data.sub_forum,
post_data.post_name,
post_data.xxx,
post_data.xxx,
post_data.xxx,
post_data.xxx,
post_data.xxx,
post_data.xxx,
post_data.xxx)
insert_list.append(insert_str)
return ','.join(insert_list)
并且如果url_content都说“英语”,那就完美了,那么一切正常。
如果内容中有一些“中文”内容,那么make_insert_sql会崩溃,但我可以用以下方法解决:
url_content = req.read().decode('gbk')
这次,如果内容全部是英文,那么它就会崩溃。
崩溃信息如:
'ascii' codec can't decode byte 0xd3 in position 0: ordinal not in range(128)
所以它就像:
all english -- req.read() OK -- req.read().decode('gbk') - Crash
english + chinese -- req.read() crash -- req.read().decode('gbk') - OK
all chinese -- req.read() crash -- req.read().decode('gbk') - OK
所以我想知道的是如何在运行时添加“decode('gbk')”部分?
任何建议都将不胜感激,谢谢:)