标记示例:
<div class="post-content">
<p>
<moredepth>
<...>
<span class="image-container float_right">
<div class="some_element">
image1
</div>
<p>do not need this</p>
</span>
<div class="image-container float_right">
image2
</div>
<p>text1</p>
<li>text2</li>
</...>
</moredepth>
</p>
</div>
Run Code Online (Sandbox Code Playgroud)
最糟糕的是“图像容器”的深度可以在任何级别。
我尝试使用的 Xpath:
//div[contains(@class, 'post-content')]//*[not(contains(@class, 'image-container'))]
Run Code Online (Sandbox Code Playgroud)
我应该使用什么 Xpath 来排除“some_element”和任何深度的“image-container”的任何其他子元素以及“image-container”元素本身?
此示例中的输出应为:
<p>
<moredepth>
<...>
<p>text1</p>
<li>text2</li>
</...>
</moredepth>
</p>
Run Code Online (Sandbox Code Playgroud)
PS是否可以使用CSS进行这样的选择?
我需要插入100亿行并多次更新它们的值.
表结构:
Column1 Column2 Count
1 1 99
1 2 10003
1 3 1
1 4 23
1 5 9994
...
99999 1 2
99999 2 2233
99999 3 5904
99999 4 12
99999 5 4598435
...
Run Code Online (Sandbox Code Playgroud)
我需要Column1编入索引.在一个表Count中,Integer在另一个表中将是Double.
什么数据库最适合我的需求?我被告知我应该使用NoSQL,但它们有很多.
我的mysql表看起来像这样:
word1 word2 count
a c 1
a d 2
a e 3
a f 4
b c 5
b d 6
b g 7
b h 8
Run Code Online (Sandbox Code Playgroud)
"a"和"b"是用户输入 - 从表中选择*,其中word1 ='a'或word1 ='b' - 得到~10000行
我需要一个查询来获取:word1是intput"a"的列
word1_是输入"b"的列
word2和word2_是同一列,因此可以忽略其中一个
我需要结合上表中的表格.例如这个查询:
select
t1.word1, t1.word2, t1.count,
t2.word1 as word1_, t2.word2 as word2_, t2.count as count_
from table t1
join table t2 on t1.word2 = t2.word2
where t1.word1 = 'a' and t2.word1 = 'b'
Run Code Online (Sandbox Code Playgroud)
产生
word1 word2 count word1_ word2_ count_
a c 1 …Run Code Online (Sandbox Code Playgroud) 我正在将mysql中的值加载到数组中,大约需要20分钟.
dictionarytable得到3列word1(INT),word2(INT),距离(double)word1和word1得到的值从0到57999,跳过了word2的一些值,因为只有1.8亿行(不是58000*58000)
int i;
double **word;
word=(double **) calloc(58000, sizeof(double *));
for(i=0;i<58000;i++)
word[i]=(double *) calloc(58000, sizeof(double));
for(word1=0;word1<58000;word1++) {
char query[600];
sprintf(query, "SELECT word1, word2, distance from dictionary where word1='%d'", word1);
mysql_query(con, query);
result = mysql_store_result(con);
while (row = mysql_fetch_row(result)) {
double distance;
word2 = atoi(row[1]);
sscanf(row[2], "%lf", &distance);
word[word1][word2] = distance;
}
mysql_free_result(result);
}
Run Code Online (Sandbox Code Playgroud)
该阵列需要14 GB的内存和7 GB的虚拟内存.现在我可以使用这个数组进行进一步的计算.
for(word1=0;word1<58000;word1++) {
double result[58000];
for(word2=0;word2<58000;word2++) {
if(word1 != word2)
for(i=0;i<58000;i++) {
result[word1] += pow((word[word1][i] - word[word2][i]), 2);
}
}
}
Run Code Online (Sandbox Code Playgroud)
许多数组值都是0但我需要数组键来识别我要比较的单词.如何改进此算法?或者如何将此数组加载到内存中并在下次执行程序时重用它?
我知道你可以在process_item()中访问spider变量,但是如何在管道init函数中访问spider变量呢?
class SiteSpider(CrawlSpider):
def __init__(self):
self.id = 10
class MyPipeline(object):
def __init__(self):
...
Run Code Online (Sandbox Code Playgroud)
我还需要在MyPipeline中访问CUSTOM_SETTINGS_VARIABLE.