小编cro*_*eaf的帖子

查找并单击"onclick"部分值中的项目

是否可以通过元素的部分值通过selenium单击onclick元素?

页面上有多个输入项,我只需要选择一个具有特定字符串的项.

例子是:

<input name="booksubmit" type="button" class="searchAvailBtnSelect" value="Select" onclick="setTimeout('disableSelect()',1);bookNowSubmit('0165','1BD','000000452014022703S000016500010708F ','101400','156000','3','02/27/2014','false','false','false','false','true','false','false','EXPRESS','63','1 Bedroom Deluxe','false','AC')">
<input name="booksubmit" type="button" class="searchAvailBtnSelect" value="Select" onclick="setTimeout('disableSelect()',1);bookNowSubmit('0165','2BD','000000452014022703S000016500010708F ','101400','156000','3','02/27/2014','false','false','false','false','true','false','false','EXPRESS','63','2 Bedroom Deluxe','false','AC')">
<input name="booksubmit" type="button" class="searchAvailBtnSelect" value="Select" onclick="setTimeout('disableSelect()',1);bookNowSubmit('0165','1BD','000000452014022703S000016500010708F ','101400','156000','3','02/27/2014','false','false','false','false','true','false','false','EXPRESS','63','1 Bedroom Presidential','false','AC')">
Run Code Online (Sandbox Code Playgroud)

如果您注意到最后,有"一卧室豪华","两卧室豪华"和"一卧室总统".由于它是一个输入项,因此我没有任何文本可以过滤,但我只需要选择一个特定的项目,例如2卧室豪华版.

在以下意义上我能做些什么:

buttons = driver.find_elements_by_name('booksubmit')
for button in buttons:
    if button ........
Run Code Online (Sandbox Code Playgroud)

什么或另一个?我目前正在使用beautifulsoup4来解析页面上的html并检索与该项目相关联的文本,因此我不知道是否可以合并.从视觉上看,该页面是一个HTML表格,格式为:

+--------------------------------------------------------------------+
|    1 Bedroom Deluxe    |   $25   |   [button i don't care about]   |
|------------------------+---------+---------------------------------|
|    2 Bedroom Deluxe    |   $50   |   [button i'm trying to click]  |
|------------------------+---------+---------------------------------|
| 1 Bedroom Presidential |   $50 …
Run Code Online (Sandbox Code Playgroud)

javascript python selenium beautifulsoup selenium-webdriver

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

无法使用PYODBC连接到网络外部的远程SQL Server

我出于某种原因似乎无法连接到我们网络之外的任何SQL Server,但如果我通过VPN在网络中,则没有问题.我的代码就像本地连接一样:

sql = pyodbc.connect(
    'DRIVER={FreeTDS};'
    'SERVER=192.168.1.xx\ROA;'
    'DATABASE=RentalDB;'
    'UID=xxxxxxx;'
    'PWD=xxxxxxx'
)
Run Code Online (Sandbox Code Playgroud)

以下是我正在尝试远程的:

sql = pyodbc.connect(
    'DRIVER={FreeTDS};'
    'SERVER=69.178.xx.xx/ROA;'
    'DATABASE=RentalDB;'
    'UID=xxxxxxxx;'
    'PWD=xxxxxxxx'
)
Run Code Online (Sandbox Code Playgroud)

尝试连接时,大约15秒左右后抛出以下错误:

pyodbc.Error:('08001','[08001] [unixODBC] [FreeTDS] [SQL Server]无法连接到数据源(0)(SQLDriverConnect)')

我能够成功地通过SQL Server Management Studio中连接的,我们有一个有建立一个连接没有问题,C#开发人员,但由于某些原因,我不能.我正在运行Python 2.7,Debian 7,FreeTDS 0.91和PYODBC 3.0.7.我认为SQL Server版本是2012.有任何想法吗?

编辑:在远程连接上,我已尝试以下'SERVER ='字符串:

69.178.xx.xx/ROA
69.178.xx.xx\ROA
mssql://69.178.xx.xx/ROA
mssql://69.178.xx.xx\ROA
69.178.xx.xx:1433/ROA
69.178.xx.xx:1433\ROA
mssql://69.178.xx.xx:1433/ROA
mssql://69.178.xx.xx:1433\ROA
Run Code Online (Sandbox Code Playgroud)

并且所有这些都返回相同的错误.

编辑2:修正了上面的东西的端口号.

python sql sql-server pyodbc freetds

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

Selenium驱动程序的页面源不同于浏览器

我很遗憾无法发布代码来重现此问题,因为它涉及登录到不是公共站点的站点.但我的问题比代码问题更普遍.实质上,driver.page_source与它正在驱动的浏览器中显示的内容不匹配.这不是一个没有完全加载的元素的问题,因为我在python终端中逐行执行代码时测试它.右键单击并转到"查看页面源"后,我在浏览器中查看页面源,但是如果我打印driver.page_source或尝试find_element_by_[...],它会显示略有不同的代码,缺少整个元素.这是有问题的HTML:

<nav role="navigation" class="utility-nav__wrapper--right">
<input id="hdn_partyId" value="1965629" type="hidden">
<input id="hdn_firstName" value="CHARLES" type="hidden">
<input id="hdn_sessionId" value="uHxQhlARvzA7N16uh+KJAdNFIcY6D8f9ornqoPQ" type="hidden">
<input id="hdn_cmsAlertRequest" type="hidden" value="Biennial Plus">
<ul class="h-list h-list--middle">
    [...]
</ul>
Run Code Online (Sandbox Code Playgroud)

然而,我需要所有4个输入元素,hdn_partyId并且hdn_sessionId元素不会出现在selenium中.page_source,如果我尝试使用它们,.find_element_by_[...]我会得到一个NoSuchElementException

我甚至检查了所有input元素并列出它们,并且这两个元素都没有显示出来.

有没有人知道为什么selenium不会提供与直接查看它正在驱动的浏览器相同的内容?

编辑:澄清......我正在通过Selenium驾驶Chrome与Chromedriver.这不是页面未完全加载的问题.正如我所提到的,我通过python终端逐行手动运行,而不是执行脚本.所以浏览器弹出,加载页面,登录,然后我手动检查浏览器的页面源并看到元素,然后我print driver.page_source和它不在那里,如果我运行session_id = driver.find_element_by_id('hdn_sessionId')我得到一个NoSuchElementException.页面中根本没有框架,也没有任何其他窗口.

python selenium

6
推荐指数
2
解决办法
3093
查看次数

python + json:解析列表

我对使用python(使用python 2.7)解析JSON数据有些新意.有一项服务我必须发送API调用,而JSON响应就像我在下面所做的那样."行"中的项目数量可能会有所不同.我需要做的是只从第二行获取"内容",如果有第二行,则将其放入列表中.从本质上讲,它只是"广告系列确认号码"的列表,而不是其他任何内容.如果有帮助的话,这个数字也总是只有9个数字.任何建议将非常感谢.

{"response":
    {"result":
        {"Potentials":
            {"row":
                [
                {"no":"1","FL":
                    {"content":"523836000004148171","val":"POTENTIALID"}
                },
                {"no":"2","FL":
                    {"content":"523836000004924051","val":"POTENTIALID"}
                },
                {"no":"3","FL":
                    [
                    {"content":"523836000005318448","val":"POTENTIALID"},
                    {"content":"694275295","val":"Campaign Confirmation Number"}
                    ]
                },
                {"no":"4","FL":
                    [
                    {"content":"523836000005318662","val":"POTENTIALID"},
                    {"content":"729545274","val":"Campaign Confirmation Number"}
                    ]
                },
                {"no":"5","FL":
                    [
                    {"content":"523836000005318663","val":"POTENTIALID"},
                    {"content":"903187021","val":"Campaign Confirmation Number"}
                    ]
                },
                {"no":"6","FL":
                    {"content":"523836000005322387","val":"POTENTIALID"}
                },
                {"no":"7","FL":
                    [
                    {"content":"523836000005332558","val":"POTENTIALID"},
                    {"content":"729416761","val":"Campaign Confirmation Number"}
                    ]
                }
                ]
            }
        },
    "uri":"/crm/private/json/Potentials/getSearchRecords"}
}
Run Code Online (Sandbox Code Playgroud)

编辑:此示例的输出示例如下:

confs = [694275295,729545274,903187021,729416761]

要么

confs = ['694275295','729545274','903187021','729416761']

它们存储为字符串或整数并不重要

编辑2:这是我的代码片段:

import urllib
import urllib2
import datetime
import json

key = '[removed]'

params = {
    '[removed]'
    }

final_URL …
Run Code Online (Sandbox Code Playgroud)

python parsing json list

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

beautifulsoup 4 + python:字符串返回“无”

我试图用 BeautifulSoup4 和 Python 2.7.6 解析一些 html,但字符串返回“None”。我试图解析的 HTML 是:

<div class="booker-booking">
    2&nbsp;rooms
    &#0183;
    USD&nbsp;0
    <!-- Commission: USD  -->
</div>
Run Code Online (Sandbox Code Playgroud)

我的Python片段是:

 data = soup.find('div', class_='booker-booking').string
Run Code Online (Sandbox Code Playgroud)

我还尝试过以下两种:

data = soup.find('div', class_='booker-booking').text
data = soup.find('div', class_='booker-booking').contents[0]
Run Code Online (Sandbox Code Playgroud)

两者都返回:

u'\n\t\t2\xa0rooms \n\t\t\xb7\n\t\tUSD\xa00\n\t\t\n
Run Code Online (Sandbox Code Playgroud)

我最终试图将第一行放入一个仅表示“2 Rooms”的变量中,将第三行放入另一个仅表示“USD 0”的变量中。

python parsing beautifulsoup html-parsing

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