小编Pow*_*fee的帖子

美味的汤,如果类"包含"或正则表达式?

如果我的班级名字经常不同,比如说:

listing-col-line-3-11 dpt 41
listing-col-block-1-22 dpt 41
listing-col-line-4-13 CWK 12
Run Code Online (Sandbox Code Playgroud)

通常我可以这样做:

for EachPart in soup.find_all("div", {"class" : "ClassNamesHere"}):
            print EachPart.get_text()
Run Code Online (Sandbox Code Playgroud)

有太多的类名可以在这里使用,所以其中一些是出来的.

我知道Python没有我通常会使用的".contains"但它确实有一个"in".虽然我还没有找到一种方法来融入它.

我希望有一种方法可以用正则表达式做到这一点.虽然我的Python语法真的让我失望但我一直在尝试变化:

regex = re.compile('.*listing-col-.*')
    for EachPart in soup.find_all(regex):
Run Code Online (Sandbox Code Playgroud)

但这似乎并没有成功.

python regex beautifulsoup web-scraping

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

Python Selenium Timeout Exception Catch

在我的线程中,我使用一个简单的变量设置为'1'或'0'来表示它是否已准备好再次运行.试图调试一个问题,有时这不会被重置,我想我可能会有.

我不希望连接超时到一些无限的加载时间(我相信Selenium的默认值是没有超时)所以我使用:

Driver.set_page_load_timeout(30)
Run Code Online (Sandbox Code Playgroud)

后来我会检查那个帖子

If condition:
 isrunning = 0
Run Code Online (Sandbox Code Playgroud)

我原本以为set_page_load_timeout会在30秒后停止加载但如果我正确理解它会实际抛出异常,所以我需要做类似的事情:

try:
  Driver.set_page_load_timeout(30)
except:
  isrunning = 0
  Driver.Close()

-Do whatever else in function -
If condition:
  isrunning = 0
  Driver.Close()
Run Code Online (Sandbox Code Playgroud)

因此,如果它运行超过30秒,它将关闭并设置为0,否则它将运行并检查并稍后设置为0.

我很欣赏这是一小段代码,但完整的东西很长,我认为这是重要的部分.

如果有人能确认我在这里有正确的想法,我会很感激.我全力以赴进行测试,但这是一个问题,每8个小时发生一次,因此很难分开,但我认为这可能适合.

python selenium web-scraping

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

XPath 类是且文本包含

我在 XPATH 上慢慢地变得越来越好,但每次我认为我拥有它(至少在基本水平上)时,我认为显而易见的东西就会决定扔给我。

尝试单击列表项:

<li class="league_check " id="lg_chk_br_1_l_22953" onclick="BranchWindow.showLeague(1,22953);"> <img leagueid="22953" src="/i/none_v.gif" width="12" height="12" onclick="BranchWindow.switchLeague(1,22953); cancelBubble(event);">Champions League </li>
Run Code Online (Sandbox Code Playgroud)

有了这个:

eachleague = "Champions League"
link = Driver.find_elements_by_xpath("//li[contains(@class, 'league_check ') and text() = '%s']" % eachleague)
Run Code Online (Sandbox Code Playgroud)

我正在仔细检查所有内容是否已实际加载等...并且(根据我对 XPATH 的理解)这应该找到列表项。

任何人都可以阐明我所缺少的东西吗?

python xpath

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

Python Pika 和 RabbitMQ 连接发布

尝试使用 Python 将数据发送到 RabbitMQ 队列。

我尚未配置服务器,但它正在为其他进程运行。我有一个有效的登录名,可以毫无问题地访问网络输出。

RabbitMQ 为 python 提供的示例代码使用 Pika:

#!/usr/bin/env python
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters(
        host='xxx.xxx.xxx.xxx:xxxxx'))
channel = connection.channel()

channel.queue_declare(queue='Test')

channel.basic_publish(exchange='',
                      routing_key='hello',
                      body='Hello World!')
print(" [x] Sent 'Hello World!'")
connection.close()
Run Code Online (Sandbox Code Playgroud)

这运行并让我开始:

pika.exceptions.ConnectionClosed
Run Code Online (Sandbox Code Playgroud)

没什么可继续的,但安全的假设是登录问题,因为示例代码没有任何登录信息。

所以我添加了它。

import pika
import sys
try:

    credentials = pika.PlainCredentials('username', 'password')


    connection = pika.BlockingConnection(pika.ConnectionParameters('xxx.xxx.xxx.xxx',
                                           xxxxx,
                                           'virtualhostnamehere',
                                           credentials,))

    channel = connection.channel()
    channel.queue_declare(queue='Test')

    channel.basic_publish(exchange='amq.direct',
                          body='Hello World!')
    print(" [x] Sent 'Hello World!'")
except:
    e = sys.exc_info()[0]
    print e
Run Code Online (Sandbox Code Playgroud)

它似乎在给我之前停留了好几分钟:

<class 'pika.exceptions.IncompatibleProtocolError'>
Run Code Online (Sandbox Code Playgroud)

服务器运行其他服务正常,但我似乎无法确定我做错了什么。

登录是正确的。虚拟主机名称正确。楼主说得对。交易所名称正确。

希望能指出正确的方向。

更新:

我也尝试使用 URLParameters 得到相同的结果。 …

python amqp rabbitmq pika

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

应该是简单的XPATH?

使用Python和Selenium我试图点击链接,如果它包含文本.在这种情况下说14:10,这将是我追求的DIV.

<div class="league_check" id="hr_selection_18359391" onclick="HorseRacingBranchWindow.showEvent(18359391);" title="Odds Available">                <span class="race-status">                    <img src="/i/none_v.gif" width="12" height="12" onclick="HorseRacingBranchWindow.toggleSelection(18359391); cancelBubble(event);">                </span>14:10 *            </div>
Run Code Online (Sandbox Code Playgroud)

我一直在看手动浏览器.我知道在我的代码触发之前DIV已经加载但是我无法弄清楚它实际上在做什么.

看起来很简单.我不擅长XPATH,但我通常会管理基础知识.

justtime = "14:10"
links = Driver.find_elements_by_xpath("//div*[contains(.,justtime)")
Run Code Online (Sandbox Code Playgroud)

据我所知,该页面上没有其他链接包含文本14:10但是当我循环浏览链接并将其打印出来时,它基本上显示了该页面上的每个链接.

我试图将其缩小到该类名并包含文本

justtime = "14:10"
links = Driver.find_elements_by_xpath("//div[contains(.,justtime) and (contains(@class, 'league_check'))]")
Run Code Online (Sandbox Code Playgroud)

这根本不会返回任何东西.真的很难过,这对我来说毫无意义.

python selenium xpath web-scraping

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

Python Timenow 没有毫秒?

我正在将时间写入 XML 文件,然后回来将其与当前时间进行比较。我以前没有用 Python 做过这个,而且时间格式似乎很奇怪。

如果我将 timenow 写入 XML(没有毫秒),我就成功地将一些内容组合在一起。

如果 XML 具有类似于 2016-01-05 00:39:20 的时间戳,那么这有效:

tree = ET.parse('C:\logs\XMLFILENAME.xml')
    for matchlisting in tree.findall('Found'):
        age = matchlisting.find('FoundTime').text
    dnow=datetime.datetime.now()
    print dnow

    d2 = datetime.datetime.strptime(age, '%Y-%m-%d %H:%M:%S')

    #print d2
    print(dnow-d2)
Run Code Online (Sandbox Code Playgroud)

但默认情况下, time.now 不会给出类似 2016-01-05 00:39:20 的内容,它会在后面添加毫秒,如 2016-01-05 00:39:20.xxxx。

我在文档中没有看到使用 strptime 处理毫秒的选项,也没有看到在没有毫秒的情况下编写 timenow 的方法,这也可以工作。

我希望有一些简单的语法来修复其中之一。我很感激这里有一个指针,几个小时以来我认为应该相当简单。

python datetime

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

.Append 中的 Python 变量列表名称

为了引出我知道这是一个坏主意。字典看起来像是一种更简洁的方式来做我需要做的事情,但我正在寻找一个占位符来保存东西,同时我想知道如何正确使用字典来满足我的需要。

与此同时,我有大约一打列表,我正在尝试将列表名称设置为与变量一起使用。

所以通常我会使用:

Listname.Append("Text")
Run Code Online (Sandbox Code Playgroud)

但是在循环的不同迭代中,我希望能够使用从较大字符串拆分的不同列表。

就像是:

x1 = []
x2 = []
x3 = []

for y in 1 to 3:
    "x"+y.append("string")
Run Code Online (Sandbox Code Playgroud)

再说一次,我知道这是一个坏主意,我正在努力了解字典,但这相当于在我这样做的时候用胶带把东西粘在一起。

我想不出让这个工作的方法。它告诉我 .append 不适用于那个(我期望的)。我尝试用 str() 长期转换整个内容,但它当然告诉我你没有附加到字符串。

我知道这可能不是你想要经常做的事情,如果我确实通过 IDE 管理它会因为我做了愚蠢的事情而对我大喊大叫,但首先有可能吗?

python python-2.7

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