アドレスに特定の文字列が含まれているものをピックアップ
前方検索であればstarts-withを使い、全文検索であればcontainsを使う。
startではなくstarts、containではなくcontainsなので注意。
response.xpath('//li/a[starts-with(@href, "http://")]').extract()
とか
response.xpath('//li/a[contains(@href, "http://")]').extract()
子要素のタグを無視して文字列を取得する
textでタグ内の文字列を取得できる。
しかし、<b>とかで囲われているとその部分は無視されてしまう。
# block の中身は "<a><b>インディアン</b> 本店 - 蓮沼/ラーメン [食べログ]</a>" print(block.xpath('text()').extract_first()) > 本店 - 蓮沼/ラーメン [食べログ]
stringを使えば子要素の文字列も取得できる。
print(block.xpath('string()').extract_first()) > インディアン 本店 - 蓮沼/ラーメン [食べログ]
stringが取得できない時
↓これだとエラーになる場合があった
response.xpath('//*[@class="discription"][1]/string()').extract()
一回変数に入れた後だとOK
block = response.xpath('//*[@class="discription"][1]') block.xpath('string()').extract()