我对自动化反向图像搜索感兴趣。Yandex 尤其适合捕杀鲶鱼,甚至比 Google 图片还要好。因此,请考虑以下 Python 代码:
import requests
import webbrowser
try:
filePath = "C:\\path\\whateverThisIs.png"
searchUrl = 'https://yandex.ru/images/'
multipart = {'encoded_image': (filePath, open(filePath, 'rb')), 'image_content': ''}
response = requests.post(searchUrl, files=multipart, allow_redirects=False)
#fetchUrl = response.headers['Location']
print(response)
print(dir(response))
print(response.content)
input()
except Exception as e:
print(e)
print(e.with_traceback)
input()```
Run Code Online (Sandbox Code Playgroud)
脚本失败并显示 KeyError,'location'
未找到。我知道代码会起作用,因为如果您替换它searchUrl
,http://www.google.hr/searchbyimage/upload
那么脚本会返回正确的 url。因此,简而言之,预期结果将是带有图像搜索的 url。实际上,我们得到了一个 KeyError ,该 url 应该存储在其中。显然,Yandex 的工作方式并不完全相同,可能 url 已关闭(尽管我尝试了大量变体)或者原因可能完全不同。
无论如何,非常感谢帮助解决这个问题!
最近我偶然发现了一些 C 代码,其中函数定义的返回类型本身就是一个结构体定义。例如,这个:
#include <stdio.h>
struct f {
int a[25];
const char* ch;
}
function(int h)
{
printf("Passed: %d\n", h);
}
int main(int argc, char* argv[]) {
printf("array at: %p ptr : %p\n", function(4).a, function(5).ch);
int *ptr = function(6).a;
for(int i = 0; i < 25; i++)
{
ptr[i] = i;
printf("%d\n", ptr[i]);
}
puts("No segfaults.");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
你可以在这里自己测试。
我的问题是为什么会允许这样的事情?它实际上比定义struct
正常有什么好处?你不能初始化变量,除非,我猜,你struct
在函数内部创建一个,然后更改它的数据return
。这是相当标准的票价,但问题是,clang 7.0.0
您甚至不需要return
任何东西!我认为void
没有return
语句的非函数是编译器错误(唯一的例外是main
),但 …
我想声明一个指针,让它保存一个自定义地址,然后为其赋值:
void main()
{
char *ptr;
ptr = (char *)0x123123; //the assignment works perfectly with a cast
printf("%p\n", ptr); //and the pointer indeed holds the address it's supposed to
*ptr = 'a'; //but this breaks
puts("2");
}
Run Code Online (Sandbox Code Playgroud)
最初我认为原因是因为我试图取消引用未初始化的内存.但我确实怀疑是这种情况,因为这some_type *some_ptr = &some_variable;
完美无瑕,所以交易必须是我指定的地址.
后来我想,以同样的方式3
或'a'
或者"alpine"
是常数,(char *) 0x123123
必须是一个常量了.并且const
-s不能在C中编辑,但仍然不能,因为尝试更改const
值将无法编译.
第三个假设是这样的地址必须是不可用的,但这也没有意义,因为第4行总是工作,无论我给出的地址或类型pointer
.