为什么运行后找不到保存的html.txt文件
import requests
def gethtml():
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"}
r=requests.get(url,headers=headers)
return r.text
def main():
url="http://www.shanghairanking.cn/rankings/bcur/2020"
html=gethtml(url)
with open("html.txt","w",encoding="utf-8") as file:
file.write(html.txt)
file.close()
if __name__=="main":
main()
本帖最后由 Twilight6 于 2020-9-25 22:02 编辑
你的代码有明显的错误,红色波浪线都提示了
你定义的 gethtml 函数没有设置传入参数,而你 main 函数调用时候传入了
而且 gethtml 函数返回的是 .text 格式了,而你 file.write 时候写入的是 html.txt ,应该把 .txt 去掉
参考代码:
import requests
def gethtml(url):
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"}
r=requests.get(url,headers=headers)
return r.text
def main():
url="http://www.shanghairanking.cn/rankings/bcur/2020"
html=gethtml(url)
with open("html.txt","w",encoding="utf-8") as file:
file.write(html)
file.close()
if __name__ == '__main__':
main()
补上楼下提出的错误,if __name__ == 'main': 要改成 if __name__ == '__main__':
Twilight6 发表于 2020-9-25 20:33
你的代码有明显的错误,红色波浪线都提示了
你定义的 gethtml 函数没有设置传入参数,而你 main 函 ...
if __name__=="main":
好像这里加了这句话,反倒不执行任何代码了 还有最好用content.decode(),用text好像解码错误
import requests
def gethtml(url):
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"}
r = requests.get(url, headers=headers)
print(r.content.decode())
return r.content.decode()
def main():
url = "http://www.shanghairanking.cn/rankings/bcur/2020"
html = gethtml(url)
with open("html.txt", "w", encoding="utf-8") as file:
file.write(html)
file.close()
main()
本帖最后由 疾风怪盗 于 2020-9-25 21:47 编辑
看了一下这个网页,其实你要获取数据
http://www.shanghairanking.cn/_nuxt/static/1600422029/rankings/bcur/2020/payload.js
在检查里network搜一下playload,可以看到很多网页,就是网站上的各种数据
可以试着用正则来提取 疾风怪盗 发表于 2020-9-25 21:25
好像这里加了这句话,反倒不执行任何代码了
确实,没注意道这个了,把'main' 加上双下划线就行了 '__main__'
Twilight6 发表于 2020-9-25 22:03
确实,没注意道这个了,把'main' 加上双下划线就行了 '__main__'
{:10_284:}我也没注意是下划线的原因。。。。。这个不是自动补全的么。。。。。。。
不加这句也没问题。。。。。。。。 疾风怪盗 发表于 2020-9-25 23:16
我也没注意是下划线的原因。。。。。这个不是自动补全的么。。。。。。。
不加这句也没问题。 ...
自动补全是你 PyCharm 之类的编辑器用习惯了吧哈哈,正常,可以不加
鱼油你好,红色的波浪线就是你的错误,你仔细对照你的代码看看,是不是你定义的 gethtml 函数没有设置传入参数,但是到了你 main 函数调用时候却传入了,而且 gethtml 函数返回的是 .text 格式了,而你 file.write 时候写入的是 html.txt ,应该把 .txt 去掉。或者使用我给你的这个代码,我个人改进了一下,感觉要更好一些,不容易出现格式错误。
import requests
def gethtml(url):
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"}
r = requests.get(url, headers=headers)
print(r.content.decode())
return r.content.decode()
def main():
url = "http://www.shanghairanking.cn/rankings/bcur/2020"
html = gethtml(url)
with open("html.txt", "w", encoding="utf-8") as file:
file.write(html)
file.close()
main()
页:
[1]