Python的parse模块问题
本帖最后由 luanshils 于 2019-10-30 08:02 编辑import urllib
from urllib import parse, request
url='http://www.baidu.com/s?{}'
search=input("请输入搜索内容:")
url_str=url.format(parse.urlencode({'wd':search}))
req=urllib.request.Request(url=url_str,headers={"User-Agent":"Mozilla/5.0"})
res=urllib.request.urlopen(req)
html=res.read().decode(“utf-8”)
filename=search+".txt"
with open (filename,"w+") as fp:
fp.write(html)
一开始能运行,但是输入结果后就报错:
后面大家帮我找到了几个错误的地方,我就修改了
真的不知道为什么,百度了半小时,怎么查都查不出来。
我只是想保存模拟请求打开的一个网页,唉,这么波折。
然后最新的出错图是
最后根据各位的帮忙,我终于解决了问题
最后的问题是保存的时候没有写encoding的格式
with open (filename,"w+",encoding='utf8') as fp: 在写入文件的时候,\xbb等特殊字符,默认的gbk编码识别不了,所以要写上写入时的编码 说实话你这代码有点看不懂,utl是什么鬼?url.str?还是url_str??还是喜欢用requests模块。。 本帖最后由 luanshils 于 2019-10-30 00:47 编辑
我叫小月亮 发表于 2019-10-30 00:43
说实话你这代码有点看不懂,utl是什么鬼?url.str?还是url_str??还是喜欢用requests模块。。
手滑,r弄成t了,不过还是错,还是之前的错误,因为我是看着CSDN上的教程来走的,- -初学者,望见谅 url.str改为url_str 518 发表于 2019-10-30 00:48
url.str改为url_str
谢谢,改了,我还是错,- - 我叫小月亮 发表于 2019-10-30 00:43
说实话你这代码有点看不懂,utl是什么鬼?url.str?还是url_str??还是喜欢用requests模块。。
这个代码计算要求我请求百度网页,然后搜索内容,把结果解码保存到本地txt import urllib
from urllib import parse, request
url='http://www.baidu.com/s?{}'
search=input("请输入搜索内容:")
url_str=url.format(parse.urlencode({'wd':search}))
req=urllib.request.Request(url=url_str,headers={"User-Agent":"Mozilla/6.0"})
res=urllib.request.urlopen(req)
html=res.read().decode("utf-8")
filename= "word.txt"
with open (filename,"w",encoding="utf-8") as fp:
fp.write(html)
参考!你的里面变量名,方法用错了 建议先去好好看看视频,当初我自己学也是这么过来的,理解 文件名里可能有非法字符,可以加try catch把出错的filename打印出来,就知道怎么回事了 本帖最后由 chomosuke 于 2019-10-30 06:34 编辑
可以参考一下我的代码: https://github.com/Maemo8086/Python_AiPan_Crawler/blob/3098eb7172ef0defa330e4bbd81e403380c740a3/AiPan.py#L199
用requests库把encoding设定成apparent encoding就可以了