小编Tel*_*tha的帖子

使用lxml查找div中的所有链接

我正在编写一个工具,需要收集网页div中的所有网址,但不包括该div之外的网址.简化页面看起来像这样:

<div id="bar">
   <a link I dont want>
   <div id="foo">
      <lots of html>
      <h1 class="baz">
         <a href=”link I want”>
      </h1>
      <h1 class="caz">
         <a href=“link I want”>
      </h1>
   </div>
</div>
Run Code Online (Sandbox Code Playgroud)

当用Firebug选择div并选择XPath时,我得到://*[@ id ="foo"].到现在为止还挺好.但是我一直试图找到div foo中的所有url.请帮我找到一种方法来提取元素中href定义的url.

示例代码类似于我正在使用w3schools的代码:

import mechanize
import lxml.html
import cookielib

br = mechanize.Browser()
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)

br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)

br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
br.addheaders = [('User-agent', 'WatcherBot')]

r = br.open('http://w3schools.com/')
html = br.response().read()
root = lxml.html.fromstring(html)

hrefs = root.xpath('//*[@id="leftcolumn"]')

# Found no solution yet. Stuck
Run Code Online (Sandbox Code Playgroud)

感谢您的时间!

python lxml web-crawler python-2.x mechanize-python

3
推荐指数
1
解决办法
3436
查看次数

访问用于绑定网格视图的数据或数据项

我有一个 gridview,我以编程方式为其设置数据源并将其数据绑定到对象集合。对于创建的每一行,我然后在字段中使用不同的方法从对象中提取相关信息,如下所示:

<asp:TemplateField HeaderText="Aliases">
<ItemTemplate>
<%# ( (MyItem)Container.DataItem).Aliases.ToString() %>
</ItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)

我的问题是,在该OnRowDeleting方法中,我希望能够DataItem使用 egMyGridView.Rows[e.RowIndex].DataItem或以其他方式访问该方法。但我找不到如何配置Gridview以保留DataItem. 是否可以访问DataItem使用的,我将如何配置它来做到这一点?如果这是不可能的,我可以访问由方法绑定的值吗?或者我是否必须采用计划 B 并将数据源对象集合重写为数据表,然后使用数据键名?

c# asp.net gridview dataitem

2
推荐指数
1
解决办法
2万
查看次数

程序在每次输入后打印一个值为10的额外行

我有这个简单的程序:

#include <stdio.h>

int main()
{
    int c;
    while ( ( c = getchar()) != EOF)
        printf("%d %c\n", c, c);

    return 1; 
}
Run Code Online (Sandbox Code Playgroud)

但是由于某些原因,在执行时我最终获得了额外的值10:

a
97 a
10 

b
98 b
10 

abc
97 a
98 b
99 c
10 
Run Code Online (Sandbox Code Playgroud)

什么是价值10,它来自哪里?如何阻止它发生?

解:

#include <stdio.h>
#include <ctype.h>

int main()
{
    int c;
    while ( ( c = getchar()) != EOF)
    {
        if ( isprint (c))
        {
            printf("%d %c\n", c, c);
        }
    }

    return 1; 
}
Run Code Online (Sandbox Code Playgroud)

c printf getchar

2
推荐指数
1
解决办法
110
查看次数

用于比较字符串值的Collat​​or(区分设置敏感)和compareTo(按字典顺序)之间的差异

我一直在阅读使用Collat​​or和String中的compareTo方法来比较字符串.我不确定两者在阅读API方面的真正区别.什么时候比另一个更喜欢?

API Collat​​or

API String compareTo

java compareto

1
推荐指数
1
解决办法
2260
查看次数

使用Register-WmiEvent在脚本开始执行时通知

我是PS的新手,我一直试图想出一种方法来检测一个脚本,比如说Foo.(ps1 | pl | py | bar)开始执行,这样我就可以在那个事件上运行一个PowerShell脚本.我开始使用MSDN中的以下示例,我添加了一个if语句来过滤除PS执行之外的所有内容.

$Query = 'SELECT * FROM Win32_ProcessStartTrace'            
$action = {            
    $e = $Event.SourceEventArgs.NewEvent 
    if($e.ProcessName -eq "powershell.exe") {           
        $fmt = 'ProcessStarted: (ID={0,5}, Parent={1,5}, Time={2,20}, Name="{3}")'            
        $msg = $fmt -f $e.ProcessId, $e.ParentProcessId, $event.TimeGenerated, $e.ProcessName            
        Write-host -ForegroundColor Red $msg            
    }
}            
Register-WmiEvent -Query $Query -SourceIdentifier ProcessStart -Action $Action  
Run Code Online (Sandbox Code Playgroud)

代码现在检测powershell实例何时启动,但我还没有找到一种方法来访问和过滤传递给实例的参数.我想确保我只对Foo脚本采取行动而不是任何其他PS脚本.有没有办法访问已启动的PowerShell进程的参数?

powershell wmi powershell-2.0

1
推荐指数
1
解决办法
3626
查看次数