Python:urlopen() 与 CURL
Python: urlopen() versus CURL
我正在使用 Python 编写一个网络爬虫并且非常喜欢它!但是我注意到 urlopen(url).read()
在 Python 上和 curl
在终端上产生的结果之间存在一些差异。我尝试 install the pycurl module 但没有成功。有没有一种简单的方法可以在 Python 上生成 CURL 结果?
更新
在这种情况下,我解析了 this URL。我在两个请求 User-Agent: Mozilla/5.0
上传递了相同的 headers。以下是输出:
- cURL 输出:http://pastebin.com/PmmNhsbba
- urlopen 输出:http://pastebin.com/7Wrt8pQZ
我知道这是一个老问题,但也许答案仍然有用。
我遇到了同样的问题,我为解决这个问题所做的是创建一个 php 文件来打印请求 headers。然后我执行了 curl
和 urlopen
并检查了 header 之间的差异。您可以在 PHP docs.
中找到该脚本的示例
此外,您可以转到浏览器并查看正在发送的 header。这样做我看到 urlopen
发送 connection: close
而不是 keep-alive
。
所以最后我添加了 keep-alive
header 并且 urlopen
开始工作为 curl
。这是我的具体问题,但由于服务器要求,您的问题可能有所不同,您需要添加或删除另一个 header。
我正在使用 Python 编写一个网络爬虫并且非常喜欢它!但是我注意到 urlopen(url).read()
在 Python 上和 curl
在终端上产生的结果之间存在一些差异。我尝试 install the pycurl module 但没有成功。有没有一种简单的方法可以在 Python 上生成 CURL 结果?
更新
在这种情况下,我解析了 this URL。我在两个请求 User-Agent: Mozilla/5.0
上传递了相同的 headers。以下是输出:
- cURL 输出:http://pastebin.com/PmmNhsbba
- urlopen 输出:http://pastebin.com/7Wrt8pQZ
我知道这是一个老问题,但也许答案仍然有用。
我遇到了同样的问题,我为解决这个问题所做的是创建一个 php 文件来打印请求 headers。然后我执行了 curl
和 urlopen
并检查了 header 之间的差异。您可以在 PHP docs.
此外,您可以转到浏览器并查看正在发送的 header。这样做我看到 urlopen
发送 connection: close
而不是 keep-alive
。
所以最后我添加了 keep-alive
header 并且 urlopen
开始工作为 curl
。这是我的具体问题,但由于服务器要求,您的问题可能有所不同,您需要添加或删除另一个 header。