如何在xpath命令中具有任意值以使用python scrapy进行Web抓取

时间:2018-12-21 08:54:37

标签: python xpath web-scraping scrapy

我如何在python(scrapy)中定义一个xpath命令以在代码中指示的位置接受任何数字。我已经尝试过将*any()放在该位置。

table = response.xpath('//*[@id="olnof_**here I want to accept any value**_altlinesodd"]/tr[1]/TD[1]/A[1]')

3 个答案:

答案 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>