首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python-request和urllib给出的HTML与浏览器中看到的不一样,目标站点只包含文本(没有明显的脚本)

python-request和urllib给出的HTML与浏览器中看到的不一样,目标站点只包含文本(没有明显的脚本)
EN

Stack Overflow用户
提问于 2019-12-27 11:57:10
回答 1查看 307关注 0票数 0

我有以下url:https://tenhou.net/3/mjlog2xml.cgi?2009042400gm-00b9-0000-3a2a55dc

它只包含文本,我想下载它并使用Python将其作为xml文件存储在我的磁盘上。我正在使用requests模块。下面是我尝试做的事情:

代码语言:javascript
复制
import requests

url = "https://tenhou.net/3/mjlog2xml.cgi?2009042400gm-00b9-0000-3a2a55dc"

r = requests.get(url, allow_redirects=True)
open('test.xml', 'wb').write(r.content)

当我去检查test.xml的内容时,它只包含文本“请下载原始文件”。我也尝试过使用urllib.request.urlopen(),但是我得到了同样的结果。

但是,当我在浏览器中打开url时,我会看到完整的标记文本,我甚至可以将页面下载为另存为xml。

我使用requests方法收到的HTML是:

代码语言:javascript
复制
<html>
   <body>
      <p>PLEASE DOWNLOAD RAW FILE</p>
   </body>
</html>>

但是网站上的超文本标记语言是like this

我要下载的文本在左边。HTML显示在右侧。如果我能得到右边的超文本标记语言,那么我就知道如何使用像BeautifulSoup这样的东西来解析它并得到我想要的东西。但是我不确定为什么python-request和urllib没有给我正确的数据。

EN

回答 1

Stack Overflow用户

发布于 2019-12-27 12:07:00

该站点似乎会检查请求中发送的user-agent

如果你在请求中显式地设置了一个类似浏览器的用户代理,你会得到你想要得到的响应:

代码语言:javascript
复制
import requests

url = "https://tenhou.net/3/mjlog2xml.cgi?2009042400gm-00b9-0000-3a2a55dc"

# Create a dictionary of the headers including the User-Agent
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'
}


r = requests.get(url, headers=headers, allow_redirects=True)
open('test.xml', 'wb').write(r.content)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59495808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档