我如何在python(scrapy)中定义一个xpath命令以在代码中指示的位置接受任何数字。我已经尝试过将*
或any()
放在该位置。
table = response.xpath('//*[@id="olnof_**here I want to accept any value**_altlinesodd"]/tr[1]/TD[1]/A[1]')
答案 0 :(得分:2)
您可以使用regular expressions:
table = response.xpath('//*[re:test(@id, "^olnof_.+_altlinesodd$")]/tr[1]/TD[1]/A[1]')
答案 1 :(得分:0)
现在将您的any假设为ANY,因此您可以尝试此操作。
x_path = '//*[@id="olnof_{}_altlinesodd"]/tr[1]/TD[1]/A[1]'
x_path.format("put your any here, may b from rand function or extracting the value from somewhere else.")
然后,
table = response.xpath(x_path)
,即可完成工作。
答案 2 :(得分:-1)
您可以尝试以下解决方法:
ends-with(@id, "_altlinesodd")
ends-with
在这种情况下更适合,但Scrapy不支持contains
语法,因此改用<div class="row">
<input type="text" formControlName="name" [class.input-validation-error]="!dataForm.get('name').valid && dataForm.get('name').touched">
<div *ngIf="dataForm.get('name').hasError('required') && dataForm.get('name').touched" class="validation-error">
The product name is required
</div>
</div>