3

一致する電話番号を持つ会社名のリストを収集する 1 つのスパイダーを既に作成しています。これは、CSV ファイルに保存されます。

次に、CSV ファイルの電話番号を POST データとして使用して、別のサイトからデータをスクレイピングしたいと考えています。同じ開始 URL をループさせたいのですが、CSV ファイルに番号がなくなるまで、各電話番号が生成するデータをスクレイピングするだけです。

これは私がこれまでに得たものです:

from scrapy.spider import BaseSpider
from scrapy.http import Request
from scrapy.http import FormRequest
from scrapy.selector import HtmlXPathSelector
from scrapy import log
import sys
from scrapy.shell import inspect_response
from btw.items import BtwItem
import csv

class BtwSpider(BaseSpider):
    name = "btw"
    allowed_domains = ["siteToScrape.com"]
    start_urls = ["http://www.siteToScrape.com/broadband/broadband_checker"] 

    def parse(self, response):
        phoneNumbers = ['01253873647','01253776535','01142726749']

        return [FormRequest.from_response(response,formdata={'broadband_checker[phone]': phoneNumbers[1]},callback=self.after_post)]


    def after_post(self, response):
       hxs = HtmlXPathSelector(response)
       sites = hxs.select('//div[@id="results"]')
       items = []
       for site in sites:
           item = BtwItem()

           fttcText = site.select("div[@class='content']/div[@id='btfttc']/ul/li/text()").extract()

           # Now we will change the text to be a boolean value
           if fttcText[0].count('not') > 0:
               fttcEnabled=0
           else:
               fttcEnabled=1

           item['fttcAvailable'] = fttcEnabled
           items.append(item)
       return items

現時点では、リスト(phoneNumbers)を介してこれをループさせようとしていましたが、これまでのところそれを機能させることさえできていません。その方法がわかったら、自分でCSVファイルからプルできるようになります。現在の状態では、リスト内のインデックスが 1 の phoneNumber を使用しているだけです。

4

1 に答える 1