luanshils 发表于 2019-10-30 00:22

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的格式

luopo 发表于 2019-10-30 10:30

with open (filename,"w+",encoding='utf8') as fp:    在写入文件的时候,\xbb等特殊字符,默认的gbk编码识别不了,所以要写上写入时的编码

我叫小月亮 发表于 2019-10-30 00:43

说实话你这代码有点看不懂,utl是什么鬼?url.str?还是url_str??还是喜欢用requests模块。。

luanshils 发表于 2019-10-30 00:45

本帖最后由 luanshils 于 2019-10-30 00:47 编辑

我叫小月亮 发表于 2019-10-30 00:43
说实话你这代码有点看不懂,utl是什么鬼?url.str?还是url_str??还是喜欢用requests模块。。
手滑,r弄成t了,不过还是错,还是之前的错误,因为我是看着CSDN上的教程来走的,- -初学者,望见谅

518 发表于 2019-10-30 00:48

url.str改为url_str

luanshils 发表于 2019-10-30 00:51

518 发表于 2019-10-30 00:48
url.str改为url_str

谢谢,改了,我还是错,- -

luanshils 发表于 2019-10-30 00:54

我叫小月亮 发表于 2019-10-30 00:43
说实话你这代码有点看不懂,utl是什么鬼?url.str?还是url_str??还是喜欢用requests模块。。

这个代码计算要求我请求百度网页,然后搜索内容,把结果解码保存到本地txt

jinting 发表于 2019-10-30 01:14

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)

参考!你的里面变量名,方法用错了

jinting 发表于 2019-10-30 01:21

建议先去好好看看视频,当初我自己学也是这么过来的,理解

bookaccount 发表于 2019-10-30 01:44

文件名里可能有非法字符,可以加try catch把出错的filename打印出来,就知道怎么回事了

chomosuke 发表于 2019-10-30 04:51

本帖最后由 chomosuke 于 2019-10-30 06:34 编辑

可以参考一下我的代码: https://github.com/Maemo8086/Python_AiPan_Crawler/blob/3098eb7172ef0defa330e4bbd81e403380c740a3/AiPan.py#L199
用requests库把encoding设定成apparent encoding就可以了
页: [1] 2 3
查看完整版本: Python的parse模块问题