Я новичок в python, а также в scrapy. Я пытаюсь просканировать исходный URL https://www.health.com/patients/status/.This исходный URL-адрес содержит много URL-адресов. Но я хочу получить только URL-адреса, которые содержат Faci / Details / # somenumber из исходного URL-адреса. URL-адрес будет таким, как показано ниже:
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 есть https://www.health.com/provi/details/64 https://www.health.com/provi/details/65 .... Наконец, я хочу получить некоторые данные из https://www.health.com/provi/details/#somenumber url. Как добиться того же?
На данный момент я пробовал приведенный ниже код из учебника scrapy и могу сканировать только URL-адрес, который содержит https://www.health.com/Faci/Details/#somenumber. Он не собирается https://www.health.com/provi/details/#somenumber. Я пытался установить ограничение глубины в файле settings.py, но это не сработало.
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
Пожалуйста, помогите мне продолжить?