私はいくつかのページをクロールするためにscrapyを使用しています。私はPython 2.7を使用しています。 スパイダーがレスポンスオブジェクトを返し、ページにあるURLを検査しています。私は指定した場所のサブパスであるURLだけを追跡するようにスパイダーを制限したい。抽出されたリンクがサブパスであるかどうかを評価する方法
例えば、私はクモのみレスポンスオブジェクトから抽出された
リンク異なる規則の数に従うwww.google.com/policies/privacy/、以下のリンクをクリックして次のように指定したいです。
など。
- ../../policies/privacy/
- ../../policies/privacy/example/collect-information.html
- #infocollect
- /インターナショナル/ en_uk /ポリシー/privacy/google_privacy_policy_en_uk.pdf
- //myaccount.google.com/
- https://support.google.com/policies/troubleshooter/2990837?hl=en-GB
私はワットすることはできませんそれを行う方法をorkアウト。私は文字列に対して単純なfindメソッドを使用しました。それは堅牢ではないか、それは私にとっては賢明なものです。
import scrapy
class googleSpider(scrapy.Spider):
name = "google"
allowed_domains = ["google.co.uk"]
start_urls = [
"http://www.google.co.uk/intl/en/policies/privacy/"
]
def parse(self, response):
for href in response.xpath('//a/@href').extract():
if href.find('/policies/privacy/') != -1:
yield scrapy.Request(response.urljoin(href), callback=self.parse_dir_contents)
def parse_dir_contents(self, response):
pass
あなたがこれまでに試したScrapyコードを共有することができます:
はその後、それはあなたが
.extract_links(response)
チェックからこの
scrapy shell
例を取得したリンクのうち、Requests
を構築する問題ですか? –確かに。私は問題に適切に取り組んでいないことがわかります。 –