私のHTMLコードは、以下の...主に類似した構造を持つdiv要素の数が含まれていますので、ここで2つのなどのdivScrapy条件クロール
<!-- 1st Div start -->
<div class="outer-container">
<div class="inner-container">
<a href="www.xxxxxx.com"></a>
<div class="abc xyz" title="verified"></div>
<div class="mody">
<div class="row">
<div class="col-md-5 col-xs-12">
<h2><a class="mheading primary h4" href="/c/my-llc"><strong>Top Dude, LLC</strong></a></h2>
<div class="mvsdfm casmhrn" itemprop="address">
<span itemprop="Address">1223 Industrial Blvd</span><br>
<span itemprop="Locality">Paris</span>, <span itemprop="Region">BA</span> <span itemprop="postalCode">123345</span>
</div>
<div class="hidden-device-xs" itemprop="phone" rel="mainPhone">
(800) 845-0000
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 2nd Div start -->
<div class="outer-container">
<div class="inner-container">
<a href="www.yyyyyy.com"></a>
<div class="mody">
<div class="row">
<div class="col-md-5 col-xs-12">
<h2><a class="mheading primary h4" href="/c/my-llc"><strong>Fat Dude, LLC</strong></a></h2>
<div class="mvsdfm casmhrn" itemprop="address">
<span itemprop="Address">7890 Business St</span><br>
<span itemprop="Locality">Tokyo</span>, <span itemprop="Region">MA</span> <span itemprop="postalCode">987655</span>
</div>
<div class="hidden-device-xs" itemprop="phone" rel="mainPhone">
(800) 845-0000
</div>
</div>
</div>
</div>
</div>
</div>
を含むコードの抜粋は、私はScrapyがをやりたいです..です。
クラス=「アウターコンテナ」を持つdivがタイトル=と別のdivが含まれている場合は上記第一のdivのようを「検証」、それは上記のURLにアクセスしてください必要があります(つまり、ワットww.xxxxxx.com)、そのページで他のフェイルドを取得します。
が場合タイトルを含む一切のdivが存在しない=上記第二のdivのように、を「検証」、それは=「MODY」のdivクラスの下にすべてのデータをフェッチする必要があります。
したがって、この条件/ロジックをScrapyクローラーに適用するにはどうすればよいですか。私はBeautifulSoupを使用して考えていたが、確かではない....私がこれまで試した持って何
....
class MySpider(CrawlSpider):
name = 'dknfetch'
start_urls = ['http://www.xxxxxx.com/scrapy/all-listing']
allowed_domains = ['www.xxxxx.com']
def parse(self, response):
hxs = Selector(response)
soup = BeautifulSoup(response.body, 'lxml')
nf = NewsFields()
cName = soup.find_all("a", class_="mheading primary h4")
addrs = soup.find_all("span", itemprop_="Address")
loclity = soup.find_all("span", itemprop_="Locality")
region = soup.find_all("span", itemprop_="Region")
post = soup.find_all("span", itemprop_="postalCode")
nf['companyName'] = cName[0]['content']
nf['address'] = addrs[0]['content']
nf['locality'] = loclity[0]['content']
nf['state'] = region[0]['content']
nf['zipcode'] = post[0]['content']
yield nf
for url in hxs.xpath('//div[@class="inner-container"]/a/@href').extract():
yield Request(url, callback=self.parse)
勿論、上記のコードリターンとは、下にあるすべてのURLのクロールdiv class = "inner-container"このコードで条件付きクロールが指定されていないため、どこに設定するかわからないので、このコードで条件付きクロールはありません。
これまで誰かが似たようなことをしていたら、分かち合ってください。ありがとう