我有以下变量$ rows:
阵列(
Run Code Online (Sandbox Code Playgroud)[0] => stdClass Object ( [product_sku] => PCH20 ) [1] => stdClass Object ( [product_sku] => PCH20 ) [2] => stdClass Object ( [product_sku] => PCH19 ) [3] => stdClass Object ( [product_sku] => PCH19 ))
我需要创建仅包含唯一值的第二个数组$ second:
阵列(
Run Code Online (Sandbox Code Playgroud)[0] => stdClass Object ( [product_sku] => PCH20 ) [1] => stdClass Object ( [product_sku] => PCH19 ))
但是当我在$ rows上运行array_unique时,我会收到:
可捕获的致命错误:类stdClass的对象无法在第191行转换为字符串
我正在Python用来刮页.到现在为止,我没有任何复杂的问题.
我正在尝试抓取的网站使用了大量的安全检查,并有一些机制来防止抓取.
使用Requests和lxml我在被IP禁止之前能够刮掉大约100-150页.有时我甚至会在第一次请求时被禁止(新的IP,之前没有使用,不同的C块).我试过使用欺骗标题,在请求之间随机化时间,仍然是相同的.
我尝试过Selenium,我得到了更好的结果.有了Selenium,在被禁止之前,我能够刮掉大约600-650页.在这里,我也尝试随机化请求(3-5秒之间,并time.sleep(300)在每300个请求上调用).尽管如此,我被禁止了.
从这里我可以得出结论,如果网站在一个打开的浏览器会话中请求超过X个页面或类似的东西,那么它们会禁止IP.
根据您的经验,我还应该尝试什么? 将在Selenium中关闭和打开浏览器帮助(例如在每100个请求关闭并打开浏览器之后).我正在考虑尝试使用代理,但是有大约数百万个页面,而且它将非常广泛.
有没有办法,哪一个在 PHP 中更改 to 退出节点(获取新 IP)?
现在,我每 10 分钟左右就会获得一个新 IP。
<?php
// Initialize cURL
$ch = curl_init();
// Set the website you would like to scrape
curl_setopt($ch, CURLOPT_URL, "http://icanhazip.com/");
curl_setopt($ch, CURLOPT_USERAGENT, '');
curl_setopt($ch, CURLOPT_REFERER, '');
curl_setopt($ch, CURLOPT_PROXY, '127.0.0.1:8118');
// Set cURL to return the results into a PHP variable
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// This executes the cURL request and places the results into a variable.
$curlResults= curl_exec($ch);
// Close curl
curl_close($ch);
// Echo the results to the screen>
echo $curlResults; …Run Code Online (Sandbox Code Playgroud) 我有以下代码:
<div id="mydiv">
<h1>Some title</h1>
<p>don't select me</p>
<p>select me 1</p>
<p>select me 2</p>
<p>select me 3</p>
<p>don't select me</p>
</div>
Run Code Online (Sandbox Code Playgroud)
我需要选择p [2]到p [4].
尝试使用此代码,它不起作用:
'.//*[@id="mydiv"]/p[preceding-sibling::p[4] and following-sibling::p[2]]'
Run Code Online (Sandbox Code Playgroud) 当前数组:
Array (
[name] => Array (
[name1] => Array (
[0] => some value1
)
[name2] => Array (
[0] => some value2
)
[name3] => Array (
[0] =>
)
)
Run Code Online (Sandbox Code Playgroud)
通缉阵列:
Array (
[name] => Array (
[name1] => Array (
[0] => some value1
)
[name2] => Array (
[0] => some value2
)
)
Run Code Online (Sandbox Code Playgroud)
由于name3[0]不包含任何值,因此需要将其删除.从我读到的,我应该使用array_filter它,但我不能让它工作.
HTML:
<div class="video">
<iframe src="https://www.youtube.com/embed/bRhZUF47p2E?version=3&rel=0&controls=0&showinfo=0&autoplay=1&mute=1&loop=1" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.video {
width: 100%;
height: 200px;
border: 1px solid red;
overflow: hidden;
position: relative;
}
iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
Run Code Online (Sandbox Code Playgroud)
JSFIDDLE: http : //jsfiddle.net/pj2utq4v/
问题:如何强制 iframe 为父 div 宽度的 100%。由于父 div 的高度只有 200 像素,因此 iframe 视频将被裁剪,这对我来说也没有问题。
从类别(由ID指定)显示文章的代码是什么?
在Wordpress中,这样做非常简单:
<?php
query_posts('cat=1');
while (have_posts()) : the_post();
the_title();
endwhile;
?>
Run Code Online (Sandbox Code Playgroud)
我正在为Joomla寻找类似的代码.
我有这样的字典:
dict = [{'a':2, 'b':3}, {'b':4}, {'a':1, 'c':5}]
Run Code Online (Sandbox Code Playgroud)
我需要获得所有不同键的平均值。结果应如下所示:
avg = [{'a':1.5, 'b':3.5, 'c':5}]
Run Code Online (Sandbox Code Playgroud)
我可以得到所有键的摘要,但我没有意识到如何计算相同的键以获得平均数。
除了创建另一个MYSQL连接之外,还有一种方法可以在浏览父类别页面时检索子类别图像吗?
例如:
现在,当我浏览"主类别"时,它显示类别标题和子类别的描述,但我找不到任何"正常"方式来检索我在基本选项中设置的图像.
我可以做的唯一方法是创建另一个MYSQL调用并从数据库中检索图像,但我想知道是否还有另一种更有效的方法.
我使用Joomla 2.5.
谢谢!
好吧,我开始拉我的头发,我需要一些帮助:)
这是我的文件,用于选择用户激活的电子邮件并向他们发送某种新闻通讯.
newsletter.php的内容
<?php
//Include configuration file
include 'config/config.php';
$pdo = new PDO("mysql:host=localhost;dbname=$db", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//Define messages
//Error messages
define('ERROR_MESSAGE_SUBJECT', 'Enter subject');
define('ERROR_MESSAGE_CONTENT', 'Enter some content');
//Define variables
$errorFlag = false;
$to = array();
//Grab variables
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$newsletterSubject = check_input($_POST['newsletterSubject']);
$newsletterContent = $_POST['newsletterContent'];
if(!$newsletterSubject) {
$errorSubject = ERROR_MESSAGE_SUBJECT;
$errorFlag = true;
}
if(!$newsletterContent) {
$errorContent = ERROR_MESSAGE_CONTENT;
$errorFlag = true;
}
}
?>
<form action="newsletter.php" method="post">
<label>Naslov newsletter-a: <?php echo '<span class="error">'.$errorSubject.'</span>';?></label>
<input type="text" …Run Code Online (Sandbox Code Playgroud)