设定
我正在使用Python 3.x和Selenium填写查询字段,然后单击搜索按钮,
# element containing the product search bar and buttons
search_area = el_id('Products').find_element_by_class_name('searchArea')
# insert name of file to be duplicated
name_field = search_area.find_element_by_xpath("//input[@type='text']")
name_field.clear()
name_field.send_keys('to_be_duplicated')
# click search button
search_area.find_element_by_xpath('span/a[1]').click()
Run Code Online (Sandbox Code Playgroud)
在哪里el_id(x) = browser.find_element_by_id(x)。
问题
执行上面的代码会产生以下错误,
ElementClickInterceptedException: Element <a class="button button-fleft searchButton" href="#"> is not clickable at point (577.6166763305664,225.06666564941406) because another element <div class="blockUI blockOverlay"> obscures it
Run Code Online (Sandbox Code Playgroud)
我可以通过在抓取并单击按钮之前插入一个硬等待来解决此错误,就像这样,
# click search button
time.sleep(1)
search_area.find_element_by_xpath('span/a[1]').click()
Run Code Online (Sandbox Code Playgroud)
但是我宁愿以不同的方式解决它,所以我遵循了这个答案并做了以下工作,
# click search button
search_button = search_area.find_element_by_xpath('span/a[1]')
WebDriverWait(driver, 10).until_not(EC.visibility_of_element_located((By.XPATH, …Run Code Online (Sandbox Code Playgroud) 设置
我在我的计算机上运行一个脚本,位于目录Users/path/to/my/script.py.
在脚本中,我使用脚本的路径,例如,
sub_path = 'Users/path/to/my/'
os.chdir(sub_path + 'other_script/')
Run Code Online (Sandbox Code Playgroud)
如您所见,我sub_path在代码中“手动”进行了定义。
问题
我不想sub_path手动定义,我宁愿让 Python 为我做。
我正在寻找类似于我用来获取当前工作目录的代码的东西:os.getcwd(),但是然后是获取当前文件目录的代码。
我主要找到类似于这个的答案,它说,
os.path.abspath(os.path.dirname(__file__))
但在 Spyder & Anaconda 设置中,这会生成NameError: name '__file__' is not defined.
我能做什么?
设置
我有一个df由多列组成的熊猫数据框,标题如下,
| id | x, single room | x, double room | y, single room | y, double room |
--------------------------------------------------------------------------
? ? ? ? ?
Run Code Online (Sandbox Code Playgroud)
我想按以下方式x对y以标题开头和开头的列进行分组,
| x | y |
--------------------------------------------------------------
| id | single room | double room | single room | double room |
--------------------------------------------------------------
? ? ? ? ?
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
设置
我正在使用 Python 3.x 和 Selenium 在网店的后端工作。
我需要在平台后端从我的计算机上传产品图片。
问题
使用 Selenium 可以单击图像上传按钮,但是单击会导致 MacOS 文件选择器弹出。
Selenium 不适用于 MacOS 文件选择器。我已经搜索了如何解决这个问题并找到了以下答案,
但是,这些都不起作用。
按钮周围的 html 是,
<td class="control">
<div class="hide-input">
<input data-val="true" data-val-required="The Image field is required." id="FileName" name="FileName" type="text" value="File636578585362423712.png">
</div>
<div id="uploadifive-FileNameUpload" class="uploadifive-button" style="height: 18px; line-height: 18px; overflow: hidden; position: relative; text-align: center; width: 50px;">Upload<input id="FileNameUpload" type="file" name="FileNameUpload" data-editor="#FileName" data-url="http://also-inc.demohoster.com/upload/uploadfile" data-path="~/UserFiles/Products/Images/" data-maxsize="10240" data-extensions="*.jpg;*.jpeg;*.png;*.gif;*.bmp;" data-thumbnailwidth="128" data-thumbnailheight="128" data-thumbnailpath="/UserFiles/Products/Images/Preview/" data-uniquename="True" data-preview="/UserFiles/Products/Images/Preview/File636578585362423712.png" data-isnew="false" data-auth="2CDE59B99D5F034087CA006254189C31F4388BA02DDE1CD1752A2FCFDE6EB556406CAF9D82DE4E02AC4D7D9813E2CF8B2A1413EF7CE8CA22FDD9822130B4EC239F1BD305F8AA1E5F6E9EFD1CD64138B8A621A88A675A3A528B7DF2F0388C36C473CBAD080CF826A28A3464FB719D039690241E38" data-session="jx134u0kcaxfu4jz1darurvg" class="file-uploader hide-input" style="display: none;"><input type="file" style="font-size: 18px; opacity: …Run Code Online (Sandbox Code Playgroud) 设置
我有一个数据框,其中有一列包含字符串中的日期。
日期格式为日/月/年,例如 05/12/2018。
数据test_df框看起来像,
date_created
0 05/12/2018
1 04/12/2018
2 04/12/2018
3 03/12/2018
4 02/12/2018
5 30/11/2018
6 30/11/2018
7 30/11/2018
8 30/11/2018
9 29/11/2018
10 02/12/2018
11 29/11/2018
12 29/11/2018
Run Code Online (Sandbox Code Playgroud)
问题
我希望按日期对此进行排序,这样我就可以,
date_created
0 05/12/2018
1 04/12/2018
2 04/12/2018
3 03/12/2018
10 02/12/2018
4 02/12/2018
5 30/11/2018
6 30/11/2018
7 30/11/2018
8 30/11/2018
9 29/11/2018
11 29/11/2018
12 29/11/2018
Run Code Online (Sandbox Code Playgroud)
但按照这个例子,
test_df.sort_values(by='date_created', inplace=False, ascending=True)
给出,
date_created
4 02/12/2018
10 02/12/2018
3 03/12/2018
1 04/12/2018
2 …Run Code Online (Sandbox Code Playgroud) 设定
我通过终端(Mac OS)中的标准命令将数据导出到.csv文件
scrapy crawl spider -o spider_ouput.csv
Run Code Online (Sandbox Code Playgroud)
问题
导出新的spider_output.csvScrapy时,会将其追加到现有的spider_output.csv。
我可以想到两种解决方案,
spider_output.csv在爬网之前删除现有的我已经读到(令我惊讶)Scrapy目前无法执行1。有些人提出了解决方法,但是我似乎无法使其正常工作。
我找到了解决方案2 的答案,但也无法使其正常工作。
有人可以帮我吗?也许我没有想到过第三个解决方案?
对 BASH 来说是全新的。提前道歉。
问题
我想将 X 天添加到特定日期。
代码
我发现date在 BASH 中检索当前日期。
我还发现我可以通过以下方式将 X 天添加到当前日期,
expiration_date=$ date -v +1d
Run Code Online (Sandbox Code Playgroud)
这使,
Tue Sep 26 20:28:13 CEST 2017
Run Code Online (Sandbox Code Playgroud)
这确实是写作日期加上X=1天数。
题
date我想插入一个特定的日期,而不是在上面的命令行中添加 X 天,例如 20/09/2017。
不要关心特定日期的格式。
换句话说:我如何进行以下工作,
expiration_date=$ '20/09/2017' -v +1d
Run Code Online (Sandbox Code Playgroud)
试过这个答案,但没有做我想要的。
编辑:不知道 OSX 的情况有所不同。
我是 Bash 的新手,提前道歉。
设置
我有一个特定的结束日期end,这取决于特定的开始日期s和周期长度,p例如,end=s+p.
问题
当且仅当今天的日期早于或等于结束日期时,我想执行命令。
即:执行命令 iff date ? end。
代码
s='20/09/2017'
p='1'
end=$( date -j -v +"$p"d -f "%d/%m/%Y" "$s")
if [[ date < “$end” ]];
then
echo 'ok'
fi
Run Code Online (Sandbox Code Playgroud)
有两件事不应该是这样,
p=1暗示end = '21/09/2017'< date = '26/09/2017',但我仍然得到一个ok.date < “$end”但我想要date ? “$end”如何纠正1和2?
建立
我的WordPress后端有一个表有几行.每行包含一个我想用Selenium打开的链接.
也就是说,我想遍历每个<tr>在<tbody>.
browser 被定义为,
browser = webdriver.Firefox(executable_path='mypath')
在<tbody>具有通常的形式,
<tbody>
<tr>...</tr>
...
<tr>...</tr>
</tbody>
Run Code Online (Sandbox Code Playgroud)
代码到目前为止
<tr> 导航到正确的页面后,
tbody = browser.find_element_by_css_selector('.widefat > tbody:nth-child(2)')
browser.find_element_by_xpath('//*[@title="Dutch: Add translation"]').click()
Run Code Online (Sandbox Code Playgroud)
该<tbody>元件被正确地选择,并且所述第一的右连杆<tr>被正确地打开.
<tr>的我不知道如何成功地将其循环到所有<tr>的<tbody>.
我试过以下,
tbody = browser.find_element_by_css_selector('.widefat > tbody:nth-child(2)')
for row in tbody.find_element_by_xpath('./tr'):
browser.find_element_by_xpath('//*[@title="Dutch: Add translation"]').click()
Run Code Online (Sandbox Code Playgroud)
但这给了TypeError: 'FirefoxWebElement' object is not iterable.
显然,tbody.find_element_by_xpath('./tr')这不是选择所有人的正确方法<tr>.
如何<tr>正确选择全部?
在循环中抓取多个网站时,我注意到之间的速度差异很大,
sleep(10)
response = requests.get(url)
Run Code Online (Sandbox Code Playgroud)
和,
response = requests.get(url, timeout=10)
Run Code Online (Sandbox Code Playgroud)
也就是说,timeout速度要快得多。
此外,对于这两种设置,我预计在请求下一页之前每页的抓取持续时间至少为 10 秒,但事实并非如此。
我现在使用多处理,但我认为要记住上述内容也适用于非多处理。
设置
我有2个.py在2个不同地点,即文件'mypath/folder_A'和'mypath/folder_B'。
文件A.py包含 2 个需要导入到B.py.
A.py 好像,
def test_function_1(x):
y = x + 1
return y
def test_function_2(x):
y = x + 2
return y
Run Code Online (Sandbox Code Playgroud)
和B.py模样,
os.chdir('/mypath/folder_A')
import A
test_function_1(1)
test_function_2(1)
Run Code Online (Sandbox Code Playgroud)
问题
当我跑步时B.py,我得到了NameError: name 'test_function_1' is not defined。
但如果我适应B.py了,
from A import test_function_1, test_function_2
Run Code Online (Sandbox Code Playgroud)
并运行B.py,它的工作原理。
题
如何将函数从A.pyinto 导入B.py而不必全部命名?
即有from A import everything吗?
设置
我有一个带有 Elementor 的 WooCommerce 商店。
我正在使用 Elementor 单一产品页面模板来生成每个产品的产品页面。
我想使用这个插件在每个产品页面上显示经常一起购买 (FBT) 元素。
为了显示 FBT 元素,插件的创建者提供了以下短代码:[premmerce_get_bundles_by_main_product_id id="X"],其中X是 WooCommerce 产品 ID。
问题
这X动态的。
如果我在短代码中填写例如产品的产品 ID ,Elementor 产品页面模板将显示我的每个产品2的 FBT 产品。2
问题
可以做X动态吗?优选地,X自动将其设置为正在访问哪个页面的产品的id。