我在Python 2.6中使用Bing API编写了一个Web爬虫,它搜索某些文档,然后下载它们以便稍后进行分类.我一直在使用字符串方法并urllib.urlretrieve()下载其URL以.pdf,.ps等结尾的结果,但是当文档被"隐藏"在URL之后时,我遇到了麻烦:
http://www.oecd.org/officialdocuments/displaydocument/?cote=STD/CSTAT/WPNA(2008)25&docLanguage=En
那么,有两个问题.有没有一种方法可以判断一个URL是否有一个pdf/doc等文件,如果它没有这么明确地链接到它(例如www.domain.com/file.pdf)?有没有办法让Python抓住那个文件?
编辑:感谢您的回复,其中一些建议下载文件,看看它是否是正确的类型.唯一的问题是......我不知道该怎么做(见上面的问题#2).urlretrieve(<above url>)只给出一个html文件,其href包含相同的url.
我正在使用提供数据在线备份的桌面应用程序.在我的应用程序中,我正在尝试实现自动软件更新功能.为此我使用java web start.我已经完成了以下使用java web start的过程.
1>创建了包含所有资源的jar.2>创建jnlp文件为:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+"
codebase="http://cmswebusa.com/kapil"
href="PixelVaultJNLP.jnlp">
<information>
<title>PixelVault</title>
<vendor>globussoft</vendor>
</information>
<resources>
<!-- Application Resources -->
<jar href="PixelVault.jar" main="true" />
</resources>
<application-desc
name="PixelVault"
main-class="com.pixelvault.systemtray.SysTray">
</application-desc>
<update check="background"/>
</jnlp>
Run Code Online (Sandbox Code Playgroud)
其中PixelVault.jar是位于http服务器位置的应用程序的jar.
当我尝试使用命令提示符运行选项下载我的应用程序时输入:javaws,我得到AWT权限异常为:
java.security.AccessControlException:访问被拒绝"java.awt.AWTPermission"
它说"java.awt.AWTPermissionException""accessSystemTray".我没有得到如何允许我的应用程序使用系统托盘.
请指导在jnlp文件中进行更改或在我的应用程序中进行任何其他更改.
我感谢您提出的所有有价值的建议,这些建议将帮助我解决这个问题.
我试图在vs2008中调用一个包含许多参数的方法.Resharper(v5)intellisense只显示其中的一小部分然后"使用智能完成来查看全部".好吧,我按下Ctrl + Shift + Space - 之后他会显示一些像"String.Concat,String.Copy ......"这样的愚蠢建议,但我想像往常一样看到我需要的参数名称和类型传入方法.
我怎么能避免这个?
在c#中我试图设置办公室字段

当我这样做:
ADEntry.Properties ["office"].添加("阿拉斯加");
它说办公室不存在.
有谁能告诉我在哪里可以买到这家酒店?
谢谢,
校准 -
我有以下字典:
Dictionary<int,string> dic = new Dictionary<int,string>();
dic[1] = "A";
dic[2] = "B";
Run Code Online (Sandbox Code Playgroud)
我想过滤字典的项目并将结果重新分配给同一个变量:
dic = dic.Where (p => p.Key == 1);
Run Code Online (Sandbox Code Playgroud)
如何将结果作为字典从同一类型[ <int,string>]返回?
我试过ToDictionary,但它不起作用.
提前致谢.
我在ac #project,在这个项目中我引用(使用项目引用)另一个用vb.net编写的类库.
现在,当我右键单击并查看该类的定义时.它没有带我到vb.net项目中的确切源代码,而是带我到动态生成的vb.net类的c#表示.
我已经尝试了反向实验,从vb.net项目开始,并引用了ac #project,这次是右键单击视图定义,它将我带到代码浏览器,所以再次,不是原始代码进行编辑.
如果两个项目都是相同的语言,一切都很好.
对此有解释吗?可能是一个允许在不同语言的项目之间轻松导航代码的解决方案?
重现:
在c#类中,添加对vb.net类的引用,例如:
VBClassLibrary.VBClass myVBClass = new VBClassLibrary.VBClass();
现在,右键单击VBCLass并选择"转到定义".
注意你最终的地方....
我使用XML绑定向导来创建TXMLDocument的后代.此类生成的文件将在根节点中声明命名空间,并为文档的其余部分创建简单,朴素的节点.
<?xml version="1.0"?>
<RootNode xmlns="URL" xmlns:xsi="URL" xsi:schemaLocation="URL">
<SomeNode>
<AnotherNode>Value</AnotherNode>
</SomeNode>
</RootNode>
Run Code Online (Sandbox Code Playgroud)
我完全没有阅读或验证这一点.但是,现在发送这些文件的处理器要求每个节点都有前缀的命名空间,以便正确处理文件.
<?xml version="1.0"?>
<NS:RootNode xmlns:NS="URL" xmlns:xsi="URL" xsi:schemaLocation="URL">
<NS:SomeNode>
<NS:AnotherNode>Value</NS:AnotherNode>
</NS:SomeNode>
</NS:RootNode>
Run Code Online (Sandbox Code Playgroud)
如何使用TXMLDocument后代完成此操作?我希望它不涉及手动编辑10000行生成的代码.
我有一个清单:
a = [32, 37, 28, 30, 37, 25, 27, 24, 35, 55, 23, 31, 55, 21, 40, 18, 50,
35, 41, 49, 37, 19, 40, 41, 31]
Run Code Online (Sandbox Code Playgroud)
最大元素是55(位置9和12上的两个元素)
我需要找到最大值位于哪个位置.请帮忙.
我正在使用TreeView在UI中显示我的数据.现在我的应用程序每5秒刷新一次,以便显示最新数据.有没有办法我可以保存我的扩展状态或树视图的崩溃状态,即使在窗口重新加载后?因为如果我有大量的数据并且需要5秒以上的时间才能获得所需的数据,那么TreeView只会在窗口刷新后每5秒钟崩溃一次,我必须从头开始.
<TreeView ItemsSource="{Binding Sections}" Grid.Row="1"
ItemTemplate="{StaticResource sectionTemplate}" >
<TreeView.Resources>
<Style TargetType="TreeViewItem">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
</Style>
</TreeView.Resources>
</TreeView>
public ObservableCollection<MyViewModel> =new ObservableCollection<MyViewModel>();
public bool IsExpanded
{
get { return (bool)GetValue(IsExpandedProperty); }
set { SetValue(IsExpandedProperty, value); }
}
public static readonly DependencyProperty IsExpandedProperty = DependencyProperty.Register("IsExpanded", typeof(bool), typeof(MyViewModel));
if (result.TotalResults > 0)
{
foreach (DomainObject obj in result.ResultSet)
{
AT myAT= (AT)obj;
arrdep.Add(myAT);
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用代码检测文件中的更改(日志文件),然后在fseek和ftell的帮助下处理更改.但如果文件被删除并更改(使用logrotate),程序将停止但不会死亡,因为它不会检测到更多更改(即使重新创建文件).fseek不显示错误和eiter ftell.我怎么能检测到该文件删除?也许是一种用其他FILE*var重新打开文件并比较文件描述符的方法.但我怎么能这样做.?