私はpythonとscrapyを初めて使いました。 シードURLをクロールしようとしていますhttps://www.health.com/patients/status/.ThisシードURLには多くのURLが含まれています。私が欲しい.Finally ... https://www.health.com/provi/details/64 https://www.health.com/provi/details/65があるウェブスクラップを使用したデータのクロールと抽出
https://www.health.com/patients/status/ ->https://www.health.com/Faci/Details/2
-> https://www.health.com/Faci/Details/3
-> https://www.health.com/Faci/Details/4
https://www.health.com/Faci/Details/2 -> https://www.health.com/provi/details/64
-> https://www.health.com/provi/details/65
https://www.health.com/Faci/Details/3 -> https://www.health.com/provi/details/70
-> https://www.health.com/provi/details/71
各https://www.health.com/Faci/Details/2ページ内:しかし、私は【選択のURLは以下のようになりますシードURLからFACI /詳細/#のsomenumberが含まれているURLのみを取得したいです https://www.health.com/provi/details/#somenumber URLからデータを取得するにはどうすればよいですか?
は、今のところ私はsettings.pyはそれが働いていないfile.Butに.Iは、深さの上限を設定しようとしましたhttps://www.health.com/provi/details/#somenumberに行かないhttps://www.health.com/Faci/Details/#somenumber .Itsが含まれているURLのみをクロールするscrapyチュートリアルとことから、以下のコードを試してみました。
import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from news.items import NewsItem
class MySpider(CrawlSpider):
name = 'provdetails.com'
allowed_domains = ['health.com']
start_urls = ['https://www.health.com/patients/status/']
rules = (
Rule(LinkExtractor(allow=('/Faci/Details/\d+',)), follow=True),
Rule(LinkExtractor(allow=('/provi/details/\d+',)),callback='parse_item'),
)
def parse_item(self, response):
self.logger.info('Hi, this is an item page! %s', response.url)
item = NewsItem()
item['id'] = response.xpath("//title/text()").extract()
item['name'] = response.xpath("//title/text()").extract()
item['description'] = response.css('p.introduction::text').extract()
filename='details.txt'
with open(filename, 'wb') as f:
f.write(item)
self.log('Saved file %s' % filename)
return item
さらに進めるために私を助けてください?